7seg4dig стал бледнее светится.
- Войдите на сайт для отправки комментариев
Добрый день, форумчане.
Для меня непонятная ситация, которая приключилась с 7-seg LED 4x module(sma420364).
Написал код, который брал случайное число с pin0 и задавал на случайный экран случайное же число. В итоге цифры по 1 просто бегали по 4 экранам, вполне себе обычно. Решил поучится задавать число через монитор порта. Почитал тут про синтаксис, про то, как интегрировать. Но чего-то не взлетело, никакие цифры не выводились на табло. Перетыкал разные синаксисы Serial, чтобы опробовать этот синтаксис, игрался с бодам и т.д.
Понятное дело, из-за того, что код не взлетел - цифр я не видел, и экран не работал.
Вернул код на прежнее место, но теперь циферблат стал светиться очень бледно. Проверил контакты и т.д., но ничего не увидел.
int incomingByte = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available() > 0)
{
incomingByte = Serial.read();
}
//тут уже пытался передать полученное число на табло, заменив свой рандомайзер
}
Вот такой использовал кусок кода. Могу, если надо выложить весь код.
Что проверить, чтобы узнать почему стало светиться бледно.
Короче, провёл собственное расследование.
Запустил такой скетч
//Аноды int a = 2; int b = 3; int c = 4; int d = 5; int e = 6; int f = 7; int g = 8; int dp = 9; //Катод int d4 = 13; void setup() { pinMode(d4, OUTPUT); pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(c, OUTPUT); pinMode(d, OUTPUT); pinMode(e, OUTPUT); pinMode(f, OUTPUT); pinMode(g, OUTPUT); pinMode(dp, OUTPUT); } void loop() //Цифра 0 { digitalWrite(d4, LOW); digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, LOW); digitalWrite(dp, LOW); }Ноль горит ярко. Значит проблема в коде.
Но я уже создал тему в Аппаратной ветке. Есть у модераторов возможность перенести? Может помогут найти ошибку из-за чего горит бледно. Вот мой скетч
// Андоы int a = 2; int b = 3; int c = 4; int d = 5; int e = 6; int f = 7; int g = 8; int dp = 9; // Катоды int d4 = 10; int d3 = 11; int d2 = 12; int d1 = 13; // Для рандомайзера int symbol; int digPosition; void setup() { Serial.begin(9600); randomSeed(analogRead(0)); pinMode(d1, OUTPUT); pinMode(d2, OUTPUT); pinMode(d3, OUTPUT); pinMode(d4, OUTPUT); pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(c, OUTPUT); pinMode(d, OUTPUT); pinMode(e, OUTPUT); pinMode(f, OUTPUT); pinMode(g, OUTPUT); pinMode(dp, OUTPUT); } void loop() { digPosition = random(1, 5); symbol = random(1, 10); Display(digPosition, symbol); delay(1000); } void Display(char digPosition, char symbol) // Подсчёт для Display. Выводит знак "symbol" на позацию "digPosition" { digitPosition(digPosition); pickSymbol(symbol); Clear(); // Очистка "digPosition" и знака в ней. } void digitPosition(char n) //Выбор экрана на которм выводится число { switch (n) { case 1: digitalWrite(d1, LOW); digitalWrite(d2, HIGH); digitalWrite(d3, HIGH); digitalWrite(d4, HIGH); break; case 2: digitalWrite(d1, HIGH); digitalWrite(d2, LOW); digitalWrite(d3, HIGH); digitalWrite(d4, HIGH); break; case 3: digitalWrite(d1, HIGH); digitalWrite(d2, HIGH); digitalWrite(d3, LOW); digitalWrite(d4, HIGH); break; case 4: digitalWrite(d1, HIGH); digitalWrite(d2, HIGH); digitalWrite(d3, HIGH); digitalWrite(d4, LOW); break; default : digitalWrite(d1, HIGH); digitalWrite(d2, HIGH); digitalWrite(d3, HIGH); digitalWrite(d4, HIGH); break; } } void Num_0() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, LOW); digitalWrite(dp, LOW); } void Num_1() { digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(dp, LOW); } void Num_2() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, LOW); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, LOW); digitalWrite(g, HIGH); digitalWrite(dp, LOW); } void Num_3() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, HIGH); digitalWrite(dp, LOW); } void Num_4() { digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp, LOW); } void Num_5() { digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp, LOW); } void Num_6() { digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp, LOW); } void Num_7() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(dp, LOW); } void Num_8() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp, LOW); } void Num_9() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp, LOW); } void Cels() // Знак Цельсий °С { digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, LOW); digitalWrite(g, HIGH); digitalWrite(dp, LOW); } void Clear() { digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(dp, LOW); } void pickSymbol(char n)// Выбор знака { switch (n) { case 0: Num_0(); break; case 1: Num_1(); break; case 2: Num_2(); break; case 3: Num_3(); break; case 4: Num_4(); break; case 5: Num_5(); break; case 6: Num_6(); break; case 7: Num_7(); break; case 8: Num_8(); break; case 9: Num_9(); break; case 10: Cels(); break; default: Clear(); break; } }Всем спасибо, извиняюсь за создание лишней темы. Ошибка была в том, что добавил дилей в луп. Убрал в его в
voidDisplay(chardigPosition,charsymbol) - стало как прежде.Только не понятно почему делей в лупе вызывает бледность.
Тему можно закрывать.
Посмотрите на строки 45-47. Вы этот бедный символ только что вывели и тут же стираете.
Ага, теперь я вспомнил зачем туда дилей вставлял.