salve, qualcuno di voi che se ne intende potrebbe controllare questo programma? funziona tutto, ha giusto qualche bug in modalità automatica, che a volte non esce ma per il resto va tutto.
poi per l alimentazione userò una batteria 12v 27ampere, secondo voi basta?
grazie mille
#include <SoftwareSerial.h>
#include <Servo.h>
#define echoPin 2 // Pin to receive echo pulse
#define trigPin 3
SoftwareSerial BluetoothSerial = SoftwareSerial(0, 1); //si richiama il modulo bluetooth
Servo myservo;
const int input1m1 = 9; //input1 per il motore 1
const int input2m1 = 10;//input2 per il motore 2
const int enablem1 = 11;//regolatore motore 1
char marcia;
int velmotore = 0;
int i;
void setup() {
Serial.begin(9600);
BluetoothSerial.begin(9600); //si stabliscono le variabii generali
pinMode(echoPin, INPUT);// set echopin input
pinMode(trigPin, OUTPUT); // set pin trigger output
pinMode(input1m1, OUTPUT);
pinMode(input2m1, OUTPUT);
pinMode(enablem1, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
myservo.attach(13); // attaches the servo on pin 9 to the servo object
myservo.write(120);
}
void loop() {
if (BluetoothSerial.available()){
marcia=BluetoothSerial.read(); //vengono lette le marce e di conseguenza la velocità
if(marcia=='1'){
velmotore = 25;
}
if(marcia=='2'){
velmotore = 51;
}
if(marcia=='3'){
velmotore = 76;
}
if(marcia=='4'){
velmotore = 102;
}
if(marcia=='5'){
velmotore = 127;
}
if(marcia=='6'){
velmotore = 153;
}
if(marcia=='7'){
velmotore = 178;
}
if(marcia=='8'){
velmotore = 204;
}
if(marcia=='9'){
velmotore = 229;
}
if(marcia=='q'){
velmotore = 254;
}
if(marcia== 'U'){
do
{
digitalWrite(trigPin, LOW);// si imposta il trigpin spento per 2 microsecondi
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);//invia per 10 microsecondi un segnale
delayMicroseconds(10);
digitalWrite(trigPin, LOW);// si spegne il trigpin
int distance = pulseIn(echoPin, HIGH); // si legge il segnale (distanza in tempo <x>)
distance= distance/58;
if((distance>30)&&(distance!=0)){ // a volte arrivano degli zeri e quelli non li devo prendere in considerazione
digitalWrite(input1m1,HIGH); // accendo il motore
digitalWrite(input2m1,LOW);
analogWrite(enablem1, 200);
}
if((distance<30)&&(distance!=0)){
analogWrite(enablem1, 0); //il motore si ferma e indica col cicalino l'arresto
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(500);
}
if(BluetoothSerial.available() && BluetoothSerial.read()=='u') {goto fuori;}
} while(marcia=='U');
}
fuori:
if(marcia=='W'){ //luci
digitalWrite(6,HIGH);
}
if(marcia=='w'){
digitalWrite(6,LOW);
}
if(marcia=='V'){ //clacson
digitalWrite(7,HIGH);
}
if(marcia=='v'){
digitalWrite(7,LOW);
}
if(marcia=='X'){ //4 frecce
do{
digitalWrite(8,HIGH);
delay(750);
digitalWrite(8,LOW);
delay(750);
if(BluetoothSerial.available() && BluetoothSerial.read()=='x') {digitalWrite(8,LOW);}
}while(marcia=='X');
}
if(marcia=='F'){
digitalWrite(input1m1, HIGH); //vengono impostati i valori per i quali il motore va avanti
digitalWrite(input2m1, LOW);
analogWrite(enablem1, velmotore); //si imposta la velocità grazie al pin PWM
Serial.print("avanti");
}
else{
analogWrite(enablem1, 0); //senza comando il motore si ferma
}
if(marcia=='B'){
digitalWrite(input1m1, LOW); //vengono impostati i valori per i quali il motore va indietro
digitalWrite(input2m1, HIGH);
analogWrite(enablem1, velmotore); //si imposta la velocità grazie al pin PWM
}
if(marcia=='L'){
myservo.write(70);
}
else{
myservo.write(120);
}
if(marcia=='R'){
myservo.write(190);
}
if(marcia=='G'){ //AVANTI A SINISTRA
digitalWrite(input1m1, HIGH); //vengono impostati i valori per i quali il motore va avanti
digitalWrite(input2m1, LOW);
analogWrite(enablem1, velmotore); //si imposta la velocità grazie al pin PWM
myservo.write(70);
}
if(marcia=='I'){ //AVANTI A DESTRA
digitalWrite(input1m1, HIGH); //vengono impostati i valori per i quali il motore va avanti
digitalWrite(input2m1, LOW);
analogWrite(enablem1, velmotore); //si imposta la velocità grazie al pin PWM
myservo.write(190);
}
if(marcia=='H'){ //DIETRO A SINISTRA
digitalWrite(input1m1, LOW); //vengono impostati i valori per i quali il motore va indietro
digitalWrite(input2m1, HIGH);
analogWrite(enablem1, velmotore); //si imposta la velocità grazie al pin PWM
myservo.write(190);
}
if(marcia=='J'){
digitalWrite(input1m1, LOW); //vengono impostati i valori per i quali il motore va indietro
digitalWrite(input2m1, HIGH);
analogWrite(enablem1, velmotore); //si imposta la velocità grazie al pin PWM
myservo.write(70);
}
}
}