Мой Светофор
- Войдите на сайт для отправки комментариев
Ср, 27/11/2013 - 13:32
Вот мой светофор: видео
индикатор использовал : 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);//выключаем желтый
}
Начало есть :) Только явно батарейку будет кушать нещадно. Это у же не первый такой проект, поищите на форуме, может что интересного для себя найдете в других вариантах реализации. Я бы еще подуал на счет отражателей в фонари, возможно было бы лучше видно, а так достаточно точечный источник заметен. Но это на вкус и цвет..
Удачного продолжения и, главное, завершения проекта!
Спасибо, будем искать