Nota
Ciao, benvenuto nella community SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 con altri appassionati.
Perché unirsi?
Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.
Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.
Anteprime esclusive: Ottieni l’accesso anticipato agli annunci di nuovi prodotti e anteprime.
Sconti speciali: Goditi sconti esclusivi sui nostri prodotti più recenti.
Promozioni festive e concorsi: Partecipa a concorsi e promozioni speciali durante le festività.
👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!
3. Aumentare la velocità¶
Oltre al segnale digitale (HIGH/LOW), l’ingresso del modulo L9110 può anche ricevere segnali PWM per controllare la velocità di uscita.
In altre parole, possiamo usare AnalogWrite() per controllare la velocità di movimento dell’auto.
In questo progetto, facciamo accelerare gradualmente l’auto e poi decelerare.
Collegamenti
I collegamenti di questo progetto sono gli stessi descritti in 2. Movimento tramite codice.
Codice
Nota
Apri il file
3.speed_up.inonel percorso3in1-kit\car_project\3.speed_up.Oppure copia questo codice nell”IDE di Arduino.
Oppure carica il codice tramite Arduino Web Editor.
Dopo che il programma sarà eseguito, l’auto accelererà gradualmente per poi rallentare altrettanto gradualmente.
Come funziona?
Lo scopo di questo progetto è scrivere diversi valori PWM sui pin di ingresso del modulo L9110 per controllare la velocità di avanzamento dell’auto.
Usa l’istruzione
for()per incrementarespeeddi 5 alla volta, scrivendo valori da 0 a 255 in modo da vedere il cambiamento della velocità dell’auto.void loop() { for(int i=0;i<=255;i+=5){ moveForward(i); delay(500); } for(int i=255;i>=0;i-=5){ moveForward(i); delay(500); } }
A proposito della funzione
moveForward().A differenza di 2. Movimento tramite codice dove i livelli alto/basso vengono dati direttamente ai pin di ingresso del modulo L9110, qui passiamo un parametro
speeddove dobbiamo dare i livelli alti.void moveForward(int speed) { analogWrite(A_1B, 0); analogWrite(A_1A, speed); analogWrite(B_1B, speed); analogWrite(B_1A, 0); }
L’istruzione for viene utilizzata per ripetere un blocco di istruzioni racchiuse tra parentesi graffe. Un contatore di incremento viene solitamente utilizzato per incrementare e terminare il ciclo.
for (initialization; condition; increment) { // istruzione(i); }
initialization: avviene per primo e solo una volta.
condition: ad ogni passaggio del ciclo, la condizione viene verificata; se è vera, viene eseguito il blocco di istruzioni e l’incremento, poi la condizione viene verificata nuovamente. Quando la condizione diventa falsa, il ciclo termina.
increment: eseguito ad ogni passaggio del ciclo quando la condizione è vera.