salve a tutti , ho terminato il mio progetto, ora vorrei inserire due tasti.. uno che faccia partire il programma e l'altro che lo stoppi,
mi spiego meglio ...ho costruito un robot adesso vorrei usare due tasti per spegnerlo e accenderlo..non riesco a trovare il modo qualcuno può darmi una mano con il codice ??
Grazie in anticipo !!
Code:
const byte led1 = 13; const byte led2 = 12; const int On = 3; // tasto on const int Off = 5; // tasto off int onState = 0; //variabile int offState = 0; //variabile int variabile =0; // variabile
sono riuscito a completare il mio robot evita ostacoli, per lo meno fino a quando il robot non si è andato a schiantare !!
qui posto il video per farvi capire meglio, comunque se arriva in obliquo su una superficie piatta non si ferma, al 99% il sensore non riceve il segnale di ritorno o sbaglio ??
se avete qualche suggerimento, ad esempio modifiche o aggiungere qualcosa fatemi sapere !
unsigned long Srf(byte pin) { pinMode(pin, OUTPUT); digitalWrite(pin, LOW); // viene posto a LOW pin, per 2 microsecondi prima di inviare un breve impulso di trigger delayMicroseconds(2); digitalWrite(pin, HIGH); // invia un impulso di trigger delayMicroseconds(10); // di 10 microsecondi digitalWrite(pin, LOW); // pone il pin al LOW in attesa che l'impulso torni indietro pinMode(pin, INPUT); unsigned long durata = pulseIn(pin, HIGH); // legge l'eco dell'impulso emesso in microsecondi unsigned long distanza = durata/60; // divide la durata per 58 per ottenere la distanza in cm Serial.println(distanza); // stampa sul Serial Monitor il valore della distanza return distanza;
Ho un servo motore, un sensore ultrasuoni (SRF05) e due led; In pratica il sensore è posizionato su un servo motore, il mio programma deve comparare la distanza che rileva a destra e quella che rileva a sinistra e a secondo di quale sia maggiore o minore accendere uno dei due led, il mio progetto è quello di un robot, quindi dopo sostituirò il programma per accendere il led con quello per far avviare le ruote.
il problema è che lampeggia solo un led in continuazione
questo è il codice:
Code:
#include <Servo.h> //libreria servo motore Servo servo; //crea l’oggetto di tipo Servo,servo sarà l’oggetto su cui opero; int durata; //durata dell'impulso int distanza; // distanza oggetto int pin_segnale = 8; // pin sensore collegato ad arduino int leftDistance, rightDistance; int led1 = 13; int led2 = 12;
void setup()
{
Serial.begin(9600); servo.attach(2); //piedino di comando del servo collegato al piedino 2 di arduino pinMode(led1, OUTPUT); pinMode(led2, OUTPUT);
pinMode(pin_segnale, OUTPUT); digitalWrite(pin_segnale, LOW); // viene posto a LOW pin, per 2 microsecondi // prima di inviare un breve impulso di trigger delayMicroseconds(2); digitalWrite(pin_segnale, HIGH); // invia un impulso di trigger delayMicroseconds(10); // di 10 microsecondi digitalWrite(pin_segnale, LOW); // pone il pin al LOW in attesa che l'impulso torni indietro pinMode(pin_segnale, INPUT); durata = pulseIn(pin_segnale, HIGH); // legge l'eco dell'impulso emesso in microsecondi distanza = durata/130; // divide la durata per 58 per ottenere la distanza in cm Serial.println(distanza); // stampa sul Serial Monitor il valore della distanza
In pratica sto creando alcuni sotto programmi nominandoli in questo modo: void decelerazione() , void avanti(); ecc.
e in seguito li vorrei richiamare tutti nel void loop ()
è possibile procedere in questo modo ??
ad esempio (a parole non ho ancora fatto il codice per questo caso): se il sensore (sensore ad ultrasuoni) rileva una certa distanza inizia a decelerare e quindi si ferma, a quel punto gira a sinistra e a destra e fa una comparazione tra quale delle due direzioni non vi siano oggetti e quindi poi il robot deve ripartire, pensavo di far tutto questo creando dei sottoprogrammi e mettere poi tutto assieme
beh l'idea sarebbe che quando il sensore ad ultra suoni individua l'oggetto ad una certa distanza inizi a decelerare e quindi a fermarsi...quindi il pulsante è da escludere, ho letto che per terminare il ciclo for bisogna aggiungere al codice: "break;" ma non funziona
ciao a tutti sto progettando un robot che evita ostacoli comandato da due motori
ora sto cercando di creare un loop per la decelerazione in modo tale da evitare che i due motori si blocchino in modo brusco rischiando di rompere gli ingranaggi che tra l'altro sono anche di plastica, comunque il mio problema è sono riuscito a creare questo loop con un ciclo for ma non so come fermare il ciclo..il codice è il seguente:
Code:
void decelerate() {
digitalWrite(MOTOR_in1, LOW); // motore sinistra gira avanti digitalWrite(MOTOR_in2, HIGH); digitalWrite(MOTOR_in3, HIGH); // motore destro gira avanti digitalWrite(MOTOR_in4, LOW);
for (valoreFade = 255; valoreFade > 0; valoreFade--) // decelerazione motore
Mi sembra di aver capito il codice l'unica cosa che non mi torna sono queste stringhe di comando:
const int leftPhoto = 1; const int rightPhoto = 2; const int irPin = 0; //Sharp infrared sensor pin const int minCliff = 350; const int maxCliff = 470; //thresholds for cliff detection
ecco non riesco a capire a cosa si riferisce questo codice, inoltre nel progetto un sensore ad infrarossi non è stato nemmeno citato, possibile che sia stato inserito dopo ? e in tal caso dove ?
..comunque ho allegato il codice completo e il link anche in formato pdf
I want to use flstudio(music software) with arduino...the pc must relieve arduino as a midi device...for example: I want to play a musical keyboard and the computer receives the notes with fl studio. This is the video:
It's only that i have 8 pads instead of a musical keyboard