Индикаторный светофор

Виталий Сергеев
Offline
Зарегистрирован: 27.09.2019

Здравствуйте. Ребят, может есть у кого.. Нужна схема на индикаторный светофор, типа этого (я бы этот собрал но тут не видно толкового подключения, так как я новенький , сам разобраться не в силах)  (https://www.youtube.com/watch?v=tPzTgALTcmI&app=desktop). Заранее очень благодарен.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Там три с половиной детали в схеме.
Разбейте задачу на три:

1. Научитесь работать с семисегментниками
2. Научитесь включать / выключать / переключать / моргать светодиодами
3. Объедините все воедино (1. и 2.)

kalapanga
Offline
Зарегистрирован: 23.10.2016

Там в скетче всё написано - куда подключать пины сегментов индикатора, куда красный и зелёный светодиоды. Индикатор вроде с общим катодом. Почему около него два резистора - только автор знает. Надо бы на каждый сегмент свой, как бы обычный светодиод подключали.

Виталий Сергеев
Offline
Зарегистрирован: 27.09.2019

Можете глянуть, что не так ? Не выводит цифры на индикатор.. Ну т.е выводит , но не корректно 

kalapanga
Offline
Зарегистрирован: 23.10.2016

А скетч где? Но если всё работает, но изображения цифр неправильные, то скорее всего распиновка Вашего индикатора отличается от той что автор исходного устройства использовал. Посмотреть документацию на индикатор или тыком отличия выяснить.

Виталий Сергеев
Offline
Зарегистрирован: 27.09.2019

У меня предположение , что я что-то, не понял и проблема скорей всего в коде.(Я собственно взял тот же листинг и просто дописал пару строк) Это мой второй проект..

int a = 2;  //For displaying segment "a"

int b = 3;  //For displaying segment "b"

int c = 4;  //For displaying segment "c"

int d = 5;  //For displaying segment "d"

int e = 6;  //For displaying segment "e"

int f = 8;  //For displaying segment "f"

int g = 9;  //For displaying segment "g"



int REDLED = 9;

int YELLOWLED = 10; 

int GREENLED = 11;



void setup() {               

  pinMode(a, OUTPUT);  //A

  pinMode(b, OUTPUT);  //B

  pinMode(c, OUTPUT);  //C

  pinMode(d, OUTPUT);  //D

  pinMode(e, OUTPUT);  //E

  pinMode(f, OUTPUT);  //F

  pinMode(g, OUTPUT);  //G



  pinMode(REDLED, OUTPUT);

 pinMode(YELLOWLED, OUTPUT);

  pinMode(GREENLED, OUTPUT);





delay(1000);

digitalWrite(REDLED, LOW);

delay(1000);



  //9

digitalWrite(REDLED, HIGH);

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, LOW);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

delay(1000);



//8

digitalWrite(REDLED, HIGH);

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

delay(1000);



//7

digitalWrite(REDLED, HIGH);

digitalWrite(a, LOW);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

delay(1000);



//6

digitalWrite(REDLED, HIGH);

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, HIGH);

digitalWrite(g, LOW);

delay(1000);



//5

digitalWrite(REDLED, HIGH);

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, LOW);

digitalWrite(f, HIGH);

digitalWrite(g, LOW);

delay(1000);



//4

digitalWrite(REDLED, HIGH);

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, HIGH);

delay(1000);



//3

digitalWrite(REDLED, HIGH);

digitalWrite(a, HIGH);

digitalWrite(b, LOW);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, LOW);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

delay(1000);



//2

digitalWrite(REDLED, HIGH);

digitalWrite(a, HIGH);

digitalWrite(b, LOW);

digitalWrite(c, LOW);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

delay(1000);



//1

digitalWrite(REDLED, HIGH);

digitalWrite(a, LOW);

digitalWrite(b, LOW);

digitalWrite(c, HIGH);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, HIGH);

delay(1000);



//0

digitalWrite(REDLED, HIGH);

digitalWrite(a, LOW);

digitalWrite(b, HIGH);

digitalWrite(c, HIGH);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

delay(1000);

digitalWrite(REDLED, LOW);

digitalWrite(a, LOW);

digitalWrite(b, LOW);

digitalWrite(c, LOW);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, LOW);

delay(200);



digitalWrite(YELLOWLED, HIGH);

delay(10000);

digitalWrite(YELLOWLED, LOW);

delay(1000);

  
  
digitalWrite(GREENLED, HIGH);

delay(10000);

digitalWrite(GREENLED, LOW);

delay(1000);


}





void loop() {



  





}

 

b707
Offline
Зарегистрирован: 26.05.2017

теперь неплохо было бы пояснить, что значит "выводит некорректно".

Виталий Сергеев
Offline
Зарегистрирован: 27.09.2019

В общем, цифр как таковых вообще нет , загорается на индикаторе что-то похожее на цифры , но частями 

b707
Offline
Зарегистрирован: 26.05.2017

Виталий Сергеев пишет:

В общем, цифр как таковых вообще нет , загорается на индикаторе что-то похожее на цифры , но частями 

скорее всего пины abcdef перепутаны между собой

bwn
Offline
Зарегистрирован: 25.08.2014

Виталий Сергеев пишет:

В общем, цифр как таковых вообще нет , загорается на индикаторе что-то похожее на цифры , но частями 

Зажигайте последовательно по одному сегменту и записывайте на каком пине. Потом знакогенератор поправьте.

kalapanga
Offline
Зарегистрирован: 23.10.2016

В скетче подписано где какая цифра формируется. Не сложно понять какой сегмент на индикаторе какой буквой обозначается. Разберитесь. А потом зажигайте сегменты по одному и смотрите, где у Вас отличие.

У Вас вообще есть распиновка конкретного Вашего индикатора?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Ну как я и сказал самым первым - разберитесь с семисегментниками. Они работают по принципу - в цикле нужный сегмент зажечь последовательно. То есть зажгли верхнюю «палку» у цифры 7, потом надо другую зажечь. Так оно и работает