Мой Светофор

mocaca
Offline
Зарегистрирован: 27.11.2013

Вот мой светофор: видео

http://youtu.be/TVo2HwAEmvM

индикатор использовал : kem(gnd)3621ag с общим катодом

arduino pro mini с ebay

скетч:

const int numer[10]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//цифры 0-9
const int microsec=30;
void setup()
{
 DDRD = B11111111;//порт D на выход
 DDRB = B00000011; //порт B на выход
 pinMode(A1, OUTPUT);//красный
 pinMode(A2, OUTPUT);//желтый
 pinMode(A3, OUTPUT);//зеленый
}
void loop()
{
  int x1=1;
  int x2=5; 
  int x3=x1*10+x2;
  int pin=15; //красный A1
  myFunc(x1,x2,x3,pin);
    int y1=2;
    int y2=0; 
    int y3=y1*10+y2;
    pin=17; //зеленый A1
    myFunc(y1,y2,y3,pin);
}
void myFunc(int z1,int z2,int z3,int pin){
for (int i=z3; i >= 0; i--){
    digitalWrite(pin, HIGH);
    for (int x=0; x <= 20000; x++){ //задержка
      PORTB = B00000001;
      PORTD = numer[z1];
      delayMicroseconds(microsec);
      PORTB = B00000010;
      PORTD = numer[z2];
      delayMicroseconds(microsec);
      if (z1<1 && z2<6 && x==10000) {
      digitalWrite(pin, LOW); 
      }
    }
z2--;
if (z2<0) {z2=9; z1--;}
}
PORTB = B00000011;//выключаем индикацию
digitalWrite(A2, HIGH);//включаем желтый
delay(3000);
digitalWrite(A2, LOW);//выключаем желтый
}

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Начало есть :) Только явно батарейку будет кушать нещадно. Это у же не первый такой проект, поищите на форуме, может что интересного для себя найдете в других вариантах реализации. Я бы еще подуал на счет отражателей в фонари, возможно было бы лучше видно, а так достаточно точечный источник заметен. Но это на вкус и цвет..

Удачного продолжения и, главное, завершения проекта!

mocaca
Offline
Зарегистрирован: 27.11.2013

Спасибо, будем искать