LUCI STOP E FRECCE Alla Tua Bici Elettrica Con Arduino E SENZA BATTERIE Esterne

by Maurizio Miscio in Circuits > Arduino

34 Views, 0 Favorites, 0 Comments

LUCI STOP E FRECCE Alla Tua Bici Elettrica Con Arduino E SENZA BATTERIE Esterne

LUCI STOP e FRECCE alla Tua Bici Elettrica con Arduino e SENZA BATTERIE esterne
00038 - frame at 0m2s.jpg

Aggiungere LUCI STOP e FRECCE alla Tua Bici Elettrica con Arduino e SENZA BATTERIE esterne


Benvenuti nel mio canale! In questo video, vi mostrerò come ho costruito e installato un fanale posteriore per la mia bici elettrica utilizzando Arduino, completo di luci di stop e indicatori di direzione. La parte migliore? Funziona senza batterie esterne, utilizzando direttamente l'alimentazione della bici!


Se sei un appassionato di fai-da-te, tecnologia e biciclette elettriche, questo progetto è perfetto per te! Migliora la visibilità e la sicurezza della tua bici aggiungendo funzionalità avanzate senza complicazioni.


Non dimenticate di lasciare un like, iscrivervi al canale e attivare le notifiche per non perdere i prossimi video! Se avete domande o suggerimenti, lasciate un commento qui sotto.


Grazie per la visione e buon divertimento con il fai-da-te!


#BiciElettrica #Arduino #FaiDaTe #LuciStop #IndicatoriDiDirezione #BiciElettricaUpgrade #SicurezzaInBici #Tecnologia #DIY

Supplies

Arduino

bici elettrica

2 led per le frecce (anche 4)

Fanale posteriore comprato a pochi denari

Codice Per Arduino:

// Definizione dei pin
const int pinLEDPosteriore = 9;       // Pin PWM per i LED posteriori
const int pinFreno = 2;               // Pin digitale per il segnale del freno
const int pinFrecciaDestra = 6;       // Pin digitale per il segnale della freccia destra
const int pinFrecciaSinistra = 5;     // Pin digitale per il segnale della freccia sinistra
const int pinFrecciaDestraLED = 3;    // Pin digitale per i LED della freccia destra
const int pinFrecciaSinistraLED = 4;  // Pin digitale per i LED della freccia sinistra


// Variabili per lo stato dei segnali
bool frenoAttivo = false;
bool frecciaDestraAttiva = false;
bool frecciaSinistraAttiva = false;


// Variabili per il lampeggiamento delle frecce
unsigned long ultimoTempoFreccia = 0;
const int intervalloLampeggio = 500;  // Intervallo di lampeggio in millisecondi


// Variabili per il timer delle frecce
unsigned long tempoInizioFrecciaDestra = 0;
unsigned long tempoInizioFrecciaSinistra = 0;
const unsigned long durataFreccia = 15000;  // Durata del lampeggio delle frecce in millisecondi (30 secondi)


void setup() {
  // Impostazione dei pin come input o output con pull-up
  pinMode(pinLEDPosteriore, OUTPUT);
  pinMode(pinFreno, INPUT_PULLUP);
  pinMode(pinFrecciaDestra, INPUT_PULLUP);
  pinMode(pinFrecciaSinistra, INPUT_PULLUP);
  pinMode(pinFrecciaDestraLED, OUTPUT);
  pinMode(pinFrecciaSinistraLED, OUTPUT);
}


void loop() {
  // Lettura degli input
  frenoAttivo = !digitalRead(pinFreno);
  bool segnaleFrecciaDestra = !digitalRead(pinFrecciaDestra);
  bool segnaleFrecciaSinistra = !digitalRead(pinFrecciaSinistra);


  // Gestione delle frecce
  if (segnaleFrecciaDestra) {
    frecciaDestraAttiva = true;
    frecciaSinistraAttiva = false;
    tempoInizioFrecciaDestra = millis();
  }
  if (segnaleFrecciaSinistra) {
    frecciaSinistraAttiva = true;
    frecciaDestraAttiva = false;
    tempoInizioFrecciaSinistra = millis();
  }


  // Controllo del LED posteriore
  if (frenoAttivo) {
    analogWrite(pinLEDPosteriore, 255);  // 100% luminosità
  } else {
    analogWrite(pinLEDPosteriore, 128);  // 50% luminosità
  }


  // Controllo delle frecce lampeggianti
  unsigned long tempoCorrente = millis();


  // Gestione del timer per la freccia destra
  if (frecciaDestraAttiva && (tempoCorrente - tempoInizioFrecciaDestra >= durataFreccia)) {
    frecciaDestraAttiva = false;
    digitalWrite(pinFrecciaDestraLED, LOW);  // Spegni LED dopo 30 secondi
  }


  // Gestione del timer per la freccia sinistra
  if (frecciaSinistraAttiva && (tempoCorrente - tempoInizioFrecciaSinistra >= durataFreccia)) {
    frecciaSinistraAttiva = false;
    digitalWrite(pinFrecciaSinistraLED, LOW);  // Spegni LED dopo 30 secondi
  }


  if (tempoCorrente - ultimoTempoFreccia >= intervalloLampeggio) {
    ultimoTempoFreccia = tempoCorrente;


    // Lampeggio freccia destra
    if (frecciaDestraAttiva) {
      digitalWrite(pinFrecciaDestraLED, !digitalRead(pinFrecciaDestraLED));  // Inversione stato LED
    } else {
      digitalWrite(pinFrecciaDestraLED, LOW);  // Spegni LED
    }


    // Lampeggio freccia sinistra
    if (frecciaSinistraAttiva) {
      digitalWrite(pinFrecciaSinistraLED, !digitalRead(pinFrecciaSinistraLED));  // Inversione stato LED
    } else {
      digitalWrite(pinFrecciaSinistraLED, LOW);  // Spegni LED
    }
  }
}