Ви не увійшли.
Ну, так и вперёд!
Ты смысл-то динамической индикации понимаешь? Как она вообще работает? Если да, то всё, что нужно ты уже умеешь, теперь делай.
Как сделаешь, я могу рассказать тебе как это делается правильно на самом деле.
Намудри так намудрил теперь попробую оптимизирувать спасибо за помощь
int anodPins[] = {A1, A2, A3, A4};
int segmentsPins[] = {5, 6, 7, 8, 9, 10, 11, 12};
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(anodPins[i], OUTPUT);
}
for (int i = 0; i < 8; i++) {
pinMode(segmentsPins[i], OUTPUT);
}
}
int seg0[] = {1, 1, 1, 1, 1, 1, 0, 0};
int seg1[] = {0, 1, 1, 0, 0, 0, 0, 0}; //Цифра 1
int seg2[] = {1, 1, 0, 1, 1, 0, 1, 0}; //Цифра 2
int seg3[] = {1, 1, 1, 1, 0, 0, 1, 0}; //Цифра 3
int seg4[] = {0, 1, 1, 0, 0, 1, 1, 0}; //Цифра 4
int seg5[] = {1, 0, 1, 1, 0, 1, 1, 0}; //Цифра 5
int seg6[] = {1, 0, 1, 1, 1, 1, 1, 0}; //Цифра 6
int seg7[] = {1, 1, 1, 0, 0, 0, 0, 0}; //Цифра 7
int seg8[] = {1, 1, 1, 1, 1, 1, 1, 0}; //Цифра 8
int seg9[] = {1, 1, 1, 1, 0, 1, 1, 0}; //Цифра 9
void loop() {
int i = 0;
for (int k = 0; k < 8; k++) {
digitalWrite(segmentsPins[k], ((seg1[k] == 1) ? LOW : HIGH));
}
digitalWrite(anodPins[i], HIGH); // Подали напряжение на анод - все индикаторы загорелись
delay(1); // Дали паузу глазу воспринять
digitalWrite(anodPins[i], LOW); // Сняли напряжение с анода, чтобы переключение катодов не вызывали мерцание
int a = 1;
for (int k = 0; k < 8; k++) {
digitalWrite(segmentsPins[k], ((seg2[k] == 1) ? LOW : HIGH));
}
digitalWrite(anodPins[a], HIGH); // Подали напряжение на анод - все индикаторы загорелись
delay(1); // Дали паузу глазу воспринять
digitalWrite(anodPins[a], LOW);
int c = 2;
for (int k = 0; k < 8; k++) {
digitalWrite(segmentsPins[k], ((seg3[k] == 1) ? LOW : HIGH));
}
digitalWrite(anodPins[c], HIGH); // Подали напряжение на анод - все индикаторы загорелись
delay(1); // Дали паузу глазу воспринять
digitalWrite(anodPins[c], LOW);
int x = 3;
for (int k = 0; k < 8; k++) {
digitalWrite(segmentsPins[k], ((seg4[k] == 1) ? LOW : HIGH));
}
digitalWrite(anodPins[x], HIGH); // Подали напряжение на анод - все индикаторы загорелись
delay(1); // Дали паузу глазу воспринять
digitalWrite(anodPins[x], LOW);
}
Ну, так и вперёд!
Ты смысл-то динамической индикации понимаешь? Как она вообще работает? Если да, то всё, что нужно ты уже умеешь, теперь делай.
Как сделаешь, я могу рассказать тебе как это делается правильно на самом деле.
Попробуй сделать i (в int i = 0;) единицей или двойкой, посмотри, что будет
уже 0=равен первой цифре 1=второй 2=третий 3=четвертой
Попробуй сделать i (в int i = 0;) единицей или двойкой, посмотри, что будет
Хорошо, не выводи пока. Просто убери цикл. Вывелась только одна первая цифра? Если да, попробуй вывести вторую.
Немного понял теперь могу вывести только одну цифру теперь буду думать как несколько вывисти
int anodPins[] = {A1, A2, A3, A4};
int segmentsPins[] = {5, 6, 7, 8, 9, 10, 11, 12};
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(anodPins[i], OUTPUT);
}
for (int i = 0; i < 8; i++) {
pinMode(segmentsPins[i], OUTPUT);
}
}
int seg0[] = {1, 1, 1, 1, 1, 1, 0, 0};
int seg1[] = {0, 1, 1, 0, 0, 0, 0, 0}; //Цифра 1
int seg2[] = {1, 1, 0, 1, 1, 0, 1, 0}; //Цифра 2
int seg3[] = {1, 1, 1, 1, 0, 0, 1, 0}; //Цифра 3
int seg4[] = {0, 1, 1, 0, 0, 1, 1, 0}; //Цифра 4
int seg5[] = {1, 0, 1, 1, 0, 1, 1, 0}; //Цифра 5
int seg6[] = {1, 0, 1, 1, 1, 1, 1, 0}; //Цифра 6
int seg7[] = {1, 1, 1, 0, 0, 0, 0, 0}; //Цифра 7
int seg8[] = {1, 1, 1, 1, 1, 1, 1, 0}; //Цифра 8
int seg9[] = {1, 1, 1, 1, 0, 1, 1, 0}; //Цифра 9
void loop() {
int i = 0;
for (int k = 0; k < 8; k++) {
digitalWrite(segmentsPins[k], ((seg1[k] == 1) ? LOW : HIGH));
}
digitalWrite(anodPins[i], HIGH); // Подали напряжение на анод - все индикаторы загорелись
delay(1); // Дали паузу глазу воспринять
digitalWrite(anodPins[i], LOW); // Сняли напряжение с анода, чтобы переключение катодов не вызывали мерцание
}
Хорошо, не выводи пока. Просто убери цикл. Вывелась только одна первая цифра? Если да, попробуй вывести вторую.
Ну, если понял, то что тебе мешает выводить разные числа? Убирай нахрен цикл вывода одного и того же в 4 разряда (строку for (int i = 0; i < 4; i++) { и соответствующую закрывающую скобку) и выводи сначала одну цифру. потом также вторую, потом также третью. Что мешает?
И да, кстати, во всех твоих примерах последним идёт 0. Надеюсь, ты пробовал делать его 1 и знаешь что при этом получается.
блин не выходит либо я дибил либо не так собрал
Ну, если понял, то что тебе мешает выводить разные числа? Убирай нахрен цикл вывода одного и того же в 4 разряда (строку for (int i = 0; i < 4; i++) { и соответствующую закрывающую скобку) и выводи сначала одну цифру. потом также вторую, потом также третью. Что мешает?
И да, кстати, во всех твоих примерах последним идёт 0. Надеюсь, ты пробовал делать его 1 и знаешь что при этом получается.
Ты сделал, что я сказал? Сделай, покажи мне как ты выводишь 2222, тогда поговорим. Просто покаж вывод.
Пока ты этого не сделаешь, даже не думай, что ты что-то понял. Ничего ты не понял.
я понял ка это
A, B, C, D, E, F, G,DP - распиновка сегментов
{1, 1, 1, 1, 1, 1, 0, 0} //Цифра 0
{0, 1, 1, 0, 0, 0, 0, 0}, //Цифра 1
{1, 1, 0, 1, 1, 0, 1, 0}, //Цифра 2
{1, 1, 1, 1, 0, 0, 1, 0}, //Цифра 3
{0, 1, 1, 0, 0, 1, 1, 0}, //Цифра 4
{1, 0, 1, 1, 0, 1, 1, 0}, //Цифра 5
{1, 0, 1, 1, 1, 1, 1, 0}, //Цифра 6
{1, 1, 1, 0, 0, 0, 0, 0}, //Цифра 7
{1, 1, 1, 1, 1, 1, 1, 0}, //Цифра 8
{1, 1, 1, 1, 0, 1, 1, 0} //Цифра 9
только как водить число с разными елементами
Ты сделал, что я сказал? Сделай, покажи мне как ты выводишь 2222, тогда поговорим. Просто покаж вывод.
Пока ты этого не сделаешь, даже не думай, что ты что-то понял. Ничего ты не понял.
В строке
int seg[] = {0, 1, 1, 0, 0, 0, 0, 0};
Меняй 0 на 1 и смотри, что получается. Когда тебе покажется, что понял, попробуй вывести 2222, потом 3333. Когда это сделаешь, дальше легче пойдёт.
Меняй только эту строку. Разберись с нею досконально!
это я понял мне как вести чтобы числа были разные к примеру 1234 или 9321
В строке
int seg[] = {0, 1, 1, 0, 0, 0, 0, 0};
Меняй 0 на 1 и смотри, что получается. Когда тебе покажется, что понял, попробуй вывести 2222, потом 3333. Когда это сделаешь, дальше легче пойдёт.
Меняй только эту строку. Разберись с нею досконально!
на данный момент скетч выводит на индикатор 1111 помогите исправить та чтобы выводил 12.21
int anodPins[] = {A1, A2, A3, A4};
int segmentsPins[] = {5, 6, 7, 8, 9, 10, 11, 12};
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(anodPins[i], OUTPUT);
}
for (int i = 0; i < 8; i++) {
pinMode(segmentsPins[i], OUTPUT);
}
}
int seg[] = {0, 1, 1, 0, 0, 0, 0, 0};
void loop() {
for (int i = 0; i < 4; i++) {
for (int b = 0; b < 8; b++) {
digitalWrite(segmentsPins[b], ((seg[b] == 1) ? LOW : HIGH));
}
digitalWrite(anodPins[i], HIGH);
delay(1);
digitalWrite(anodPins[i], LOW);
}
}