Salve a tutti, avevo finito finalmente la mia macchinina, costruita usando un semplice sketch e una basetta l298n con sensore ultrasuoni. Sono riuscito a trasportare il tutto usando una batteria da 9V, mettendo in comune sia la terra che il polo positivo alle due schede. Dopo qualche prova ho visto che il mio piccolo robot schiva ostacoli effettivamente schivava gli ostacoli ma si spegneva e riaccendeva subito dopo un pò. Successivamente nell'arco di un'ora vado per riaccendere il mio robottino e questo si riavviava sempre più spesso. Ho notato che la scheda Arduino UNO si riavviava sempre, non so quale sia il problema.
Grazie per chi mi aiuterà ![]()
Per orientarvi meglio qui sotto troverete sia il codice che lo schema e anche la singola basetta l298n.
codice:
#include <NewPing.h>
#define PIN_TRIG 2
#define PIN_ECHO 3
#define MAX_DIST 3000
NewPing datoregistrato(PIN_TRIG,PIN_ECHO,MAX_DIST);
int ENA=11;
int IN1=10;
int IN2=9;
int IN3=8;
int IN4=7;
int ENB=6;
unsigned int uS;
float cm;
void setup() {
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Serial.begin(115200);
}
void loop() {
Serial.print("Dista: ");
Serial.print(cm);
Serial.println(" cm");
uS = datoregistrato.ping();
cm = datoregistrato.convert_cm(uS);
if(cm>15)
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, 250);
analogWrite(ENB, 250);
}
if (cm>=15 && cm<=50)
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, (int)(200*(cm-15)/35+50));
analogWrite(ENB, (int)(200*(cm-15)/35+50));
}
if (cm<=15)
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, 120);
analogWrite(ENB, 120);
}
}
link l298n --> http://www.instructables.com/id/Arduino-Modules-L298N-Dual-H-Bridge-Motor-Controll/
Immagine del mio schema
