Zurück   www.sondersignalanlagen.com > Sammlungen > Unsere Sammlungen > Doc112
Kennwort vergessen?

Hinweise

Antwort
 
Themen-Optionen Ansicht
Alt 11.02.2016, 11:30   #1
Doc112

Silber-Mitglied
 
Benutzerbild von Doc112
 
Name: Johannes
Registriert seit: 21.10.2011
Ort: Bad Krozingen
Beiträge: 1.219
Standard Selbstbau Fahrradblaulicht aus Hänsch Movia mit Arduino nano

Hier möchte ich euch meinen Selbstbau eines Fahrradblaulichtes vorstellen. Ich hab es aus Lagerteilen als Geburtstagsgeschenk für meine 7-jähriges Partenkind gebaut. Kosten: 3 Euro für Ardoino pro min, 1,99 Euro für die Rohrschelle.



Teileliste:
- Arduino nano bzw. pro mini
- Hänsch Movia Haube blau
- 3x Hochleistungs LEDs
- 3x Metallwinkel
- NPN Transistor
- 9V Blockbaterie mit Kontaktkabel
- Schiebeschalter und Taster
- Sperholzplatte
- Rohrschelle

Über den Taster können die 11 unterschiedlichen Blitzmodi gewählt werden.

Code:
//Fahrrad-Blaulicht by Doc112
//Blitzmuster von Hella K-LED FO und RTK7

const int buttonPin = 2;

int rate= 1;
int reset= 100;
int timer = 0;
int buttonState = 0;
int counter = 1;
int buttonStateHIGH = 0;
int blau = 13; //PWN
int sensorPin = A7;
int sensorValue = 0;

void setup() {
    Serial.begin(9600);
    pinMode(buttonPin, INPUT_PULLUP);   
    pinMode(blau, OUTPUT);  
}

void loop(){
  timer++; //timer erhöhen
  delay(rate); //Geschwindigkeit timer
  if (timer == reset) //Reset
  timer = 0;
 
//  sensorValue = analogRead(sensorPin); //Poti auslesen
//  rate = map(sensorValue, 0, 1023, 0, 100); //Bereich Sensor u Rate festlegen
//  analogWrite(gelb, rate); //Ausgabe zur Kontrolle

  
  buttonState = digitalRead(buttonPin); //Modiwahl durch Taster
  if (buttonState == HIGH) 
  {     
    buttonStateHIGH = 1;
  } 
  if (buttonState == LOW && buttonStateHIGH == 1)
  {
    counter++; //Modi hochzählen
    buttonStateHIGH = 0;
  }
  if (counter == 12) //Modi zurücksetzen (letzter Modi + 1)
  {
    counter = 0; 
  }
 
  Serial.print("ti= " ); //Ausgabe timer-Wert
  Serial.println(timer);
  Serial.print("\t mo= "); //Ausgabe modi-Wert
  Serial.println(counter);
  
  
  if (counter == 0) //Modus 0
  {
   switch (timer) {
    case 1:
    digitalWrite(blau, HIGH);
      break;
    case 20:
    digitalWrite(blau, LOW);
      break;
    case 55:
    timer = 0;
    default: 
    ;
   }
  }
  
  if (counter == 1) //Modus 1
  {
   switch (timer) {
    case 1:
    digitalWrite(blau, HIGH);
      break;
    case 11:
    digitalWrite(blau, LOW);
      break;
    case 14:
    digitalWrite(blau, HIGH);
      break;
    case 17:
    digitalWrite(blau, LOW);
      break;
    case 20:
    digitalWrite(blau, HIGH);
      break;
    case 23:
    digitalWrite(blau, LOW);
      break;
    case 26:
    digitalWrite(blau, HIGH);
      break;
    case 29:
    digitalWrite(blau, LOW);
      break;
    case 40:
    timer = 0;
    default:
    ;
   }
  }
if (counter == 2) //Modus 2 RTK7 Tag
  {
   switch (timer) {
    case 1:
    digitalWrite(blau, HIGH);
      break;
    case 17:
    digitalWrite(blau, LOW);
      break;
    case 22:
    digitalWrite(blau, HIGH);
      break;
    case 38:
    digitalWrite(blau, LOW);
      break;
    case 97:
    timer = 0;
    default:
    ;
   }
  }
if (counter == 3) //Modus 3 RTK7 Nacht
  {
   switch (timer) {
    case 1:
    digitalWrite(blau, HIGH);
      break;
    case 5:
    digitalWrite(blau, LOW);
      break;
    case 12:
    digitalWrite(blau, HIGH);
      break;
    case 16:
    digitalWrite(blau, LOW);
      break;
    case 100:
    timer = 0;
    default:
    ;
   }
  }

if (counter == 4) //Modus 4
  {
   switch (timer) {
    case 1:
    digitalWrite(blau, HIGH);
      break;
    case 20:
    digitalWrite(blau, LOW);
      break;
    case 27:
    digitalWrite(blau, HIGH);
      break;
    case 32:
    digitalWrite(blau, LOW);
      break;
    case 55:
    timer = 0;
    default: 
    ;
   }
  }
  
if (counter == 5) //Modus 5
  {
   switch (timer) {
    case 1:
    digitalWrite(blau, HIGH);
      break;
    case 7:
    digitalWrite(blau, LOW);
      break;
    case 14:
    digitalWrite(blau, HIGH);
      break;
    case 21:
    digitalWrite(blau, LOW);
      break;
    case 28:
    digitalWrite(blau, HIGH);
      break;
    case 35:
    digitalWrite(blau, LOW);
      break;
    case 55:
    timer = 0;
    default: 
    ;
   }
  }
  
  if (counter == 6) //Modus 6
  {
   switch (timer) {
    case 1:
    digitalWrite(blau, HIGH);
      break;
    case 5:
    digitalWrite(blau, LOW);
      break;
    case 8:
    digitalWrite(blau, HIGH);
      break;
    case 13:
    digitalWrite(blau, LOW);
      break;
    case 16:
    digitalWrite(blau, HIGH);
      break;
    case 21:
    digitalWrite(blau, LOW);
      break;
    case 24:
    digitalWrite(blau, HIGH);
      break;
    case 29:
    digitalWrite(blau, LOW);
      break;
    case 55:
    timer = 0;
    default: 
    ;
   }
  }
  
  if (counter == 7) //Modus 7
  {
   switch (timer) {
    case 1:
    digitalWrite(blau, HIGH);
      break;
    case 55:
    digitalWrite(blau, LOW);
      break;
    case 100:
    timer = 0;
    default: 
    ;
   }
  }
  
  if (counter == 6) //Modus 6
  {
   switch (timer) {
    case 1:
    digitalWrite(blau, HIGH);
      break;
    case 25:
    digitalWrite(blau, LOW);
      break;
    case 55:
    timer = 0;
    default: 
    ;
   }
  }
  
  if (counter == 8) //Modus 8
  {
   switch (timer) {
    case 1:
    digitalWrite(blau, HIGH);
      break;
    case 13:
    digitalWrite(blau, LOW);
      break;
    case 25:
    digitalWrite(blau, HIGH);
      break;
    case 75:
    digitalWrite(blau, LOW);
      break;
    case 55:
    timer = 0;
    default: 
    ;
   }
  }
  
  if (counter == 9) //Modus 9
  {
   switch (timer) {
    case 1:
    digitalWrite(blau, HIGH);
      break;
    case 13:
    digitalWrite(blau, LOW);
      break;
    case 25:
    digitalWrite(blau, HIGH);
      break;
    case 75:
    digitalWrite(blau, LOW);
      break;
    case 100:
    timer = 0;
    default: 
    ;
   }
  }  
  
    
  if (counter == 10) //Modus 10
  {
   switch (timer) {
    case 1:
    digitalWrite(blau, HIGH);
      break;
    case 11:
    digitalWrite(blau, LOW);
      break;
    case 18:
    digitalWrite(blau, HIGH);
      break;
    case 25:
    digitalWrite(blau, LOW);
      break;
    case 32:
    digitalWrite(blau, HIGH);
      break;
    case 39:
    digitalWrite(blau, LOW);
      break;
    case 100:
    timer = 0;
    default: 
    ;
   }
  }  
  
    
  if (counter == 11) //Modus 11
  {
   switch (timer) {
    case 1:
    digitalWrite(blau, HIGH);
      break;
    case 6:
    digitalWrite(blau, LOW);
      break;
    case 12:
    digitalWrite(blau, HIGH);
      break;
    case 18:
    digitalWrite(blau, LOW);
      break;
    case 24:
    digitalWrite(blau, HIGH);
      break;
    case 30:
    digitalWrite(blau, LOW);
      break;
    case 36:
    digitalWrite(blau, HIGH);
      break;
    case 42:
    digitalWrite(blau, LOW);
      break;
    case 100:
    timer = 0;
    default: 
    ;
   }
  }  
}




Schau mal vorbei: Meine Sammlung Viele Klangcodierungen als Hörprobe.
Suche weitere MP3-Dateien von noch nicht eingefügten Sondersignalen. Bitte via PN melden. DANKE
Doc112 ist offline   Privat Nachricht senden Mit Zitat antworten
Alt 11.02.2016, 21:24   #2
RKLsammler

Silber-Mitglied
 
Benutzerbild von RKLsammler
 
Name: Matthias
Registriert seit: 25.02.2013
Beiträge: 1.252
Standard

Coole Sache!

Hab ein bisschen an deinem Code herumgebastelt und eine Memory-Funktion eingebunden, d.h. das zuletzt eingestellte Blitzmuster bleibt nach Abschalten erhalten.

Nötige Änderungen im Code:

Code:
//Fahrrad-Blaulicht by Doc112
//Blitzmuster von Hella K-LED FO und RTK7

#include < EEPROM.h > //LEERZEICHEN zwischen den Klammern ENTFERNEN!

const int buttonPin = 2;

int rate= 1;
int reset= 100;
int timer = 0;
int buttonState = 0;
int counter = 0;
int buttonStateHIGH = 0;
int blau = 13; //PWN
int sensorPin = A7;
int sensorValue = 0;

int addr = 0;

void setup() {
    Serial.begin(9600);
    pinMode(buttonPin, INPUT_PULLUP);   
    pinMode(blau, OUTPUT);
    counter = EEPROM.read(addr);  
}

void loop(){
  timer++; //timer erhöhen
  delay(rate); //Geschwindigkeit timer
  if (timer == reset) //Reset
  timer = 0;
 
//  sensorValue = analogRead(sensorPin); //Poti auslesen
//  rate = map(sensorValue, 0, 1023, 0, 100); //Bereich Sensor u Rate festlegen
//  analogWrite(gelb, rate); //Ausgabe zur Kontrolle

  
  buttonState = digitalRead(buttonPin); //Modiwahl durch Taster
  if (buttonState == HIGH) 
  {     
    buttonStateHIGH = 1;
  } 
  if (buttonState == LOW && buttonStateHIGH == 1)
  {
    counter++; //Modi hochzählen
    EEPROM.write(addr, counter);
    buttonStateHIGH = 0;
  }
  if (counter == 12) //Modi zurücksetzen (letzter Modi + 1)
  {
    counter = 0; 
  }
Der Rest ab hier bleibt gleich.

Hoffentlich hat das Forum alles übernommen, denn interessanterweise kann ich "#include < EEPROM.h >" ohne die Leerzeichen zwischen den eckigen Klammern nicht schreiben, es verschwindet warum auch immer...
RKLsammler ist offline   Privat Nachricht senden Mit Zitat antworten
Alt 11.02.2016, 22:31   #3
WhelenVector

Gold-Mitglied
 
Benutzerbild von WhelenVector
 
Name: Lars
Registriert seit: 07.09.2012
Ort: Erlangen
Beiträge: 2.261
Standard

Zitat:
Zitat von RKLsammler Beitrag anzeigen


Hoffentlich hat das Forum alles übernommen, denn interessanterweise kann ich "#include < EEPROM.h >" ohne die Leerzeichen zwischen den eckigen Klammern nicht schreiben, es verschwindet warum auch immer...
Die Software hält das < > für XHTML Code. Z.b. < b > wird ja auch unsichtbar und dafür ist der Text dann fett. Nur dass < EEPROM.h > keinen Effekt hat

Hast du das Projekt schon einmal vorgestellt? Das kommt mir bekannt vor.

Aber sonst, sehr tolle Sache, gefällt mir!
Eine technische Frage hätte ich allerdings: Wie steuerst du die LED's an?




WhelenVector ist offline   Privat Nachricht senden Mit Zitat antworten
Alt 11.02.2016, 22:59   #4
RKLsammler

Silber-Mitglied
 
Benutzerbild von RKLsammler
 
Name: Matthias
Registriert seit: 25.02.2013
Beiträge: 1.252
Standard

Zitat:
Zitat von WhelenVector Beitrag anzeigen
Die Software hält das < > für XHTML Code. Z.b. < b > wird ja auch unsichtbar und dafür ist der Text dann fett. Nur dass < EEPROM.h > keinen Effekt hat
Stimmt, nur mich wundert es, dass die Regel auch im [CODE]-Tag angewendet wird, spitze Klammern kommen da ja öfters vor.

Zitat:
Zitat von WhelenVector Beitrag anzeigen
Hast du das Projekt schon einmal vorgestellt? Das kommt mir bekannt vor.
Das Video alleine ist ja schon eine Weile online

Zitat:
Zitat von WhelenVector Beitrag anzeigen
Eine technische Frage hätte ich allerdings: Wie steuerst du die LED's an?
Ich kanns zwar nicht genau erkennen, aber ich denke die LED hängen einfach in Serie direkt an der 9V-Batterie.
Bei einer VF von ca. 3,3 pro LED und dem internen Widerstand der Batterie hält sich der Strom in erträglichen Grenzen
RKLsammler ist offline   Privat Nachricht senden Mit Zitat antworten
Alt 11.02.2016, 23:12   #5
WhelenVector

Gold-Mitglied
 
Benutzerbild von WhelenVector
 
Name: Lars
Registriert seit: 07.09.2012
Ort: Erlangen
Beiträge: 2.261
Standard

Zitat:
Zitat von RKLsammler Beitrag anzeigen
Stimmt, nur mich wundert es, dass die Regel auch im [CODE]-Tag angewendet wird, spitze Klammern kommen da ja öfters vor.
Falls es dich interessiert
https://de.wikipedia.org/wiki/BBCode

Zitat:
Zitat von RKLsammler Beitrag anzeigen
Das Video alleine ist ja schon eine Weile online
Das habe ich nicht gesehen, aber dann bilde ich mir dass doch nicht ein.

Zitat:
Zitat von RKLsammler Beitrag anzeigen
Ich kanns zwar nicht genau erkennen, aber ich denke die LED hängen einfach in Serie direkt an der 9V-Batterie.
Bei einer VF von ca. 3,3 pro LED und dem internen Widerstand der Batterie hält sich der Strom in erträglichen Grenzen
Sowas hätte ich jetzt auch vermutet. 3 LED's a ~3V direkt an der 9V Batterie und gesteuert mit einen Transistor im TO-220 Gehäuse. Aber lange dürfe die Batterie nicht durchhalten, oder? Was sagt der Entwickler zu der Laufzeit?




WhelenVector ist offline   Privat Nachricht senden Mit Zitat antworten
Alt 12.02.2016, 00:35   #6
trachti

Silber-Mitglied
 
Name: Michael
Registriert seit: 27.12.2009
Ort: Recklinghausen
Beiträge: 1.201
Standard

Hallo,

2 Fragen:

- ist die Schaltung irgendwo normal im Handel erhältlich?
- kann ich damit auch ca. 10 LED's ansteuern?

Gruß
Michael
trachti ist offline   Privat Nachricht senden Mit Zitat antworten
Antwort


Forumregeln


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:09 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.