Introduktion till (IC) 555 TIMER BASICS (ASTABLE) (2 / 2 steg)
Steg 2: ARDUINO och 555 TIMER
Jag har skrivit en liten kod. Denna kod räknar sekunder från 0-59, jag har setup två tryckknappar och anslutit dem till pin6 och pin7 på Arduino. När jag trycker på knappen ansluten till pin6 räkningen ökar med 1 och minskar med 1 när jag trycker på tryckknapp ansluten till pin7, när räkningen når 59 det börjar igen från noll. Nu, jag har också setup min 555 timer och på produktionen jag har anslutit en LED, beslöt jag att också ansluta en tråd från produktionen av 555(pin3) till pin6 på Arduino och ta bort tryckknappen, och jag kan titta på tiden ökar varje gång de 555 / LED går hög och kommer att fortsätta att räkna så länge pulsen blir hög och jag kan ändra R1 för att öka eller minska den tid-höga eller stämma potentiometern och justera i tid-Low som kommer att påverka hur snabbt den räknare ökar. Koden kan inte vara lätt att förstå, men inte fokusera på koden för detta instructable handlar om 555 Astable timerläge.
Nästa upp! Monostable läge. Tack.
Var initiering
int New_Sec = 0;
int Sec_Min = 0;
int Sec_Max = 60.
POrt minnesfel
int set_up = 6;
int set_down = 7.
void setup() {
pinMode(set_up,INPUT);
pinMode (set_down, ingång);
Serial.BEGIN(9600);
}
/ * öka sekund * /
Sekunder funktion
void set_sec() {
tag (!. Seriell); medan följetong är igång
IF(digitalRead(set_up)==High) {//if digital tryckknapp är hög
_delay_ms(100);
IF(Sec_Min<60) {//and sekunder är mindre än 60
om (Sec_Min > = 59) //if sekunder är större eller lika med 59
Sec_Min = New_Sec; om s är fortsätta upp till eller lika med 59 räkna igen från noll.
Sec_Min = Sec_Min + 1. öka SEK med 1 för varje pb tryck
Sec_Max = Sec_Min;
}
}
annat {
Sec_Min = Sec_Min;
}
/ * stegvis minskning sekunder * /
IF(digitalRead(set_down)==High) {
_delay_ms(100);
IF(Sec_Max>0) {//if SEK högsta är större än 0
om (Sec_Min < = 0) //if SEK minimum är mindre eller lika med 0
Sec_Max = Sec_Max; secs högst är lika med SEK maximal
Sec_Max = Sec_Max-1; secs högst är lika med SEK-högst 1
Sec_Min = Sec_Max; secs minst är lika med maximalt SEK
}
}
annat {
Sec_Max = Sec_Max;
}
}
void loop() {
set_sec(); funktionsanrop
Serial.Print("S:");
Serial.println(Sec_Min);
Serial.Print("\n");
Delay(100);
}