TA DAAM i jest nowa wersja przełacznika.
Tym razem mozna podłaczyc do modułu cztery kamery, a sterowanie jest zrealizowane za pomoca przełacznika jednopozycyjnego. Przełacznik musi być tak ustawiony, aby przy pozycji OFF wychylenie serwa to minimum, natomiast przy OFF wychylenie 100%.
Kamery przełaczane sa cyklicznie , czyli każde kliknięcie przełacznikiem z pozycji OFF do ON powoduje przełaczenie na kolejna kamerę.
Mozna zaprogrammować ilośc kamer w zależności ile mamy ich w modelu, Jeżeli sa tylko dwie to programujemy przełacznik tak aby klikanie przełacznikiem przełaczało tylko dwie kamery. Schemat i płytka narysowana w EAGL-u.
Załącznik:
Schemat.jpg [ 91.69 KiB | Przeglądane 7250 razy ]
Załącznik:
Płytka.png [ 10.38 KiB | Przeglądane 7241 razy ]
Załącznik:
Elementy.png [ 6.7 KiB | Przeglądane 7241 razy ]
Gotowa płytka przygotowana metoda żelazkową
Załącznik:
IMAG0203[1].jpg [ 278.04 KiB | Przeglądane 7250 razy ]
oraz kod do procesora
Kod:
#include <EEPROM.h>
#include <Button.h>
Button guzik = Button(4, PULLUP);
unsigned long StartTime = 0;
unsigned long EndTime = 0;
unsigned long EndTime1 = 0;
boolean CzyZmiana= false;
int IleKam=0;
int StartRc;
int ktora=1;
int roznica=0;
int ile;
void setup() {
pinMode(1, OUTPUT); //przekażnik PK1
pinMode(2, OUTPUT); //przekażnik PK2
pinMode(0, OUTPUT); // LED sygnalizacyjny
pinMode(3, INPUT_PULLUP); //we RC
pinMode(4, INPUT_PULLUP); //przycisk PRG
digitalWrite(0,HIGH);
delay(1000);
digitalWrite(0,LOW);
delay(1000);
IleKam=EEPROM.read(0);
if(IleKam>5) {IleKam=1;}
for(ile=1;ile<=IleKam;ile++)
{
digitalWrite(0,HIGH);
delay(200);
digitalWrite(0,LOW);
delay(200);
}
delay(1000);
// pętla while czekająca 3000 (3sek)na wejście w programowanie
EndTime1 = millis()+3000;
while(millis()<=EndTime1) {
digitalWrite (0,HIGH);
delay(50);
digitalWrite (0,LOW);
delay(50);
if(guzik.uniquePress())
{CzyZmiana=true;
break;
}
} // koniec pętli while
if(CzyZmiana&&true){wybieranie();};
} // koniec setup
void loop() {
// pętla główna
StartRc=pulseIn(3,HIGH);
delay(100);
roznica=pulseIn(3,HIGH)-StartRc;
if(roznica >300){
ktora++;
if(ktora>IleKam){ktora=1;}
zmiana();
}
}
//******************************************
void wybieranie()
{
digitalWrite(0,LOW);
delay(300);
CzyZmiana=false; //ustawienie warunku naciśnięcia przycisku
IleKam=0; //numer programu na 1
while(CzyZmiana==false)
{
IleKam++;
if(IleKam>4){IleKam=1;}
for(ile=1;ile<=IleKam;ile++)
{
digitalWrite(0,HIGH);
delay(200);
digitalWrite(0,LOW);
delay(200);
}
EndTime = millis()+1000;
while(millis()<=EndTime) {
if(guzik.uniquePress())
{EEPROM.write(0,IleKam);
CzyZmiana=true;
break;
}
}
} // koniec while
}
//******************************************
void zmiana()
{
switch(ktora)
{
case 1:
// kamera 1
digitalWrite (1,LOW);
digitalWrite(2,LOW);
break;
case 2:
// kamera 2
digitalWrite (1,LOW);
digitalWrite(2,HIGH);
break;
case 3:
// kamera 3
digitalWrite (1,HIGH);
digitalWrite(2,LOW);
break;
case 4:
// kamera 4
digitalWrite (1,HIGH);
digitalWrite(2,HIGH);
break;
}
}
I filmik pokazujący zasadę działania. Płytka na której jest zmontowany przełacznik jest płytka prototypową. Ta zamieszczona powyżej jest trochę mniejsza.
Czerwone ledy są wlutowane tylko na potrzeby pokazania działania przełaczania. Ich miejsce zajmą potrójne wtyki kolkowe na których jest wyprowadzone także zasilanie 12V.
Przełącznik może mieć także inne zastosowania.