- Registriert
- 08.08.2007
- Beiträge
- 1.949
Hallo,
ich habe mir kurz vor Weihnachten einen Arduino Nano gekauft.
Es gibt ja schon einige Programme im Netz, dennoch habe ich mir ein Lichtmodul mit automatischen Bremslicht, Rückfahrscheinwerfer und Pieper programmiert.
Hardware:
Signal vom Empfänger: Digitaler Eingang D2
Bremslicht LED(270 Ohm): Digitaler Ausgang D12
Rückfahrscheinwerfer LED(on Board): Digitaler Ausgang D13
Pieper (1k Ohm): Digitaler Ausgang D3
Software:
ich habe mir kurz vor Weihnachten einen Arduino Nano gekauft.
Es gibt ja schon einige Programme im Netz, dennoch habe ich mir ein Lichtmodul mit automatischen Bremslicht, Rückfahrscheinwerfer und Pieper programmiert.
Hardware:
Signal vom Empfänger: Digitaler Eingang D2
Bremslicht LED(270 Ohm): Digitaler Ausgang D12
Rückfahrscheinwerfer LED(on Board): Digitaler Ausgang D13
Pieper (1k Ohm): Digitaler Ausgang D3
Software:
Code:
// Schaltmodul über RCKanal mit Bremslicht und Rückfahrscheinwerfer und Rückfahrwarner
const byte PIN_RC = 2; // Pin 2 wo das Empfängersignal eingelesen wird
unsigned long RcValue; // Eingelesener Wert
boolean Null = 0; // Nullstellung wird erkannt
boolean vorher_Null = 0; // Nullstellung vorher
const byte LED=13; // Rückfahr LED weiß
const byte LEDrt=12; // Bremslicht rot
int timer_loop = 0; //Schleife bis Brems LED aus
const byte speakerPin = 3; // Lautsprecher an Pin 3
int frequency = 1300; // 1300Hz
int duration = 400; // Dauer des Tons
int ton_loop = 0; // Intervallzeit für den Ton
void setup()
{
pinMode (LED, OUTPUT); // Rückfahrlicht
pinMode (LEDrt, OUTPUT); // Bremslicht LED
// Eingang für Empfängersignal an Pin 2
pinMode(PIN_RC, INPUT);
digitalWrite(PIN_RC, HIGH);
}
void loop()
{
// Aktuellen RC-Wert vom Empfänger einlesen
RcValue = pulseIn(PIN_RC, HIGH, 50000); // PIN_RC = Eingang, HIGH = Flanke, 50000 = Timeout
delay(10); // Zeitbasis für die Timer_loop
if (RcValue < 1450) {
digitalWrite (LED,HIGH); // Rückfahrscheinwerfer ein
ton_loop = ton_loop + 1; // als Ersatz für den Pausetimer gibt es dises Schleife
if (ton_loop <=1) { // am Anfang Ton einschalten
tone(speakerPin, frequency, duration); // 400 ms Ton ausgeben
}
if (ton_loop == 60) { // Intervallzeit für den Ton 60*10ms = 600 ms
ton_loop = 0;} // wenn Intervall voll, Loop wieder zurück setzen
}
if (RcValue >1451) {
digitalWrite (LED,LOW); // Rückfahrscheinwerfer aus
ton_loop = 0; // Ton_loop aus
}
if ((RcValue >1450) &&(RcValue <1550)) {//Abfrage Nullstellung
Null = true;
}
if (vorher_Null == false && Null == true){ //vorher kein Null -> jetzt Null-> Bremslicht an
digitalWrite (LEDrt,HIGH);
timer_loop = 0; // timer auf 0 setzen
}
if (timer_loop == 200 || Null == false) { // wenn timer = 200 oder wieder FWD bzw RVS, dann Bremslicht aus
digitalWrite (LEDrt,LOW);
}
vorher_Null = Null; // alten Null Wert speichern
Null = false; // aktuellen Nullwert zurück setzen
timer_loop = timer_loop +1; // Timer um 1 hochzählen
}