Dimenticavo il codice!
// Impostazioni dei Motori
#define PWMA 11
#define PWMB 9
#define AIN1 4
#define AIN2 7
#define BIN1 8
#define BIN2 12
#define STBY 13
#define SensInfrarossi 200
#define motoreA 0
#define motoreB 0
#define AVANTI 0
#define INDIETRO 0
// Variabili dei sensori
int Bottone = 2; // Input del Touch / Bottone.
int Faretto = 3; // Output del faretto.
int Grigio = 4; // Input del sensore grigio.
int Infrarossi = 5; // Input sensore ad infrarossi.
int LedArduino = 13; // LED sull'Arduino.
static int conta = 1;
static int resto = 0;
// ------------------ METODO SETUP ----------------------------------
void setup(){
Serial.begin(9600); // Apro porta seriale e setto Boud Rate a 9600 bps
// Setto le impostazioni per i motori
pinMode( STBY,OUTPUT );
pinMode( PWMA,OUTPUT );
pinMode( PWMB,OUTPUT );
pinMode( AIN1,OUTPUT );
pinMode( AIN2,OUTPUT );
pinMode( BIN1,OUTPUT );
pinMode( BIN2,OUTPUT );
digitalWrite( STBY,HIGH );
// Setto le impostazioni dei sensori
pinMode(Faretto, OUTPUT); // Dichiaro Faretto come Output
pinMode(Bottone, INPUT); // Dichiaro Bottone come Input
pinMode(LedArduino, OUTPUT);
pinMode(Infrarossi , INPUT);
pinMode(Grigio , INPUT); // Dichiaro Sensore di Grigi come Input
}
// ------------------- METODO LOOP [ MAIN ] -----------------------------
void loop(){
int ValBottone = digitalRead(Bottone); // Leggo Valore del Bottone
if ( ValBottone == HIGH ){ // Metto LOW per il bottone e HIGH per il touch
conta++;
resto = conta % 2;
Serial.println("### Richiesta Cambio Algoritmo.. ");
/* Faccio stampare conta per controllare.
Serial.println(conta);
*/
}
if ( resto == 0) {
Serial.println("### Algoritmo Num 1");
// Richiamo il primo metodo
Algoritmo1();
}
else {
Serial.println("### Algoritmo Num 2");
// Richiamo secondo metodo
Algoritmo2();
}
}
// ------------------ METODO NUMERO 1 ----------------------------------------------------------------------------------
void Algoritmo2(){
int ValoreLuce;
Serial.println("### Valore luce d'ambiente: ");
ValoreLuce = analogRead(0); // Entrata analogica Numero 0
Serial.println(ValoreLuce,DEC);
// ----------- ACCENSIONE LED SE E' BUIO ----------------
if(ValoreLuce<650){
Serial.println("### LED Spento");
digitalWrite(Faretto, HIGH); // Accendo il faretto.
}
else {
Serial.println("### LED Acceso");
digitalWrite(Faretto, LOW); // Spengo il faretto.
}
// ----------- Accensione LED per identificare l'algoritmo.
digitalWrite(LedArduino, HIGH);
delay(1300);
digitalWrite(LedArduino, LOW);
delay(1300);
// ----------- Codice Algoritmo 1 --------------
// Da Scrivere
}
// ------------------ METODO NUMERO 2 ----------------------------------------------------------------------------------
void Algoritmo1(){
int ValoreLuce;
Serial.println("### Valore luce d'ambiente: ");
ValoreLuce = analogRead(0); // Entrata analogica Numero 0
Serial.println(ValoreLuce,DEC);
// ----------- ACCENSIONE LED SE E' BUIO ----------------
if(ValoreLuce<650){
Serial.println("### LED Spento");
digitalWrite(Faretto, HIGH); // Accendo il faretto.
}
else {
Serial.println("### LED Acceso");
digitalWrite(Faretto, LOW); // Spengo il faretto.
}
// ----------- Accensione LED per identificare l'algoritmo.
digitalWrite(LedArduino, HIGH);
delay(100);
// ----------- CODICE DEI MOTORI [ Algoritmo 2 ] ------------
int ValoreGrigio; // Valore Medio Normale: 340
// Valore Medio Grigio: 410
// Valore Medio Nero : 420-30
ValoreGrigio=analogRead(Grigio);
Serial.println("### Valore Grigio:");
Serial.println(ValoreGrigio,DEC);
if( ValoreGrigio > 50){
Serial.println("### Sensore Infrarossi: ");
Serial.println( analogRead(Infrarossi) );
int Distanza = analogRead(Infrarossi);
if ( Distanza > SensInfrarossi ) {
Serial.println("### Sto Sterzando..");
gira();
}
else{
Serial.println("### Andando Avanti!");
avanti();
}
}
else if( ValoreGrigio < 135 ){
Serial.println("### MISSIONE OK");
//fermo();
}
}
// --------------------------------- CODICE AZIONAMENTO MOTORI -----------------------------------------
void avanti(){
digitalWrite( AIN2,HIGH );
digitalWrite( AIN1,LOW );
digitalWrite( BIN2,HIGH );
digitalWrite( BIN1,LOW );
analogWrite( PWMA,246 );
analogWrite( PWMB,240 ); // Motore di destra
}
void indietro(){
digitalWrite( AIN2,LOW );
digitalWrite( AIN1,HIGH );
digitalWrite( BIN2,LOW );
digitalWrite( BIN1,HIGH );
analogWrite( PWMA,246 );
analogWrite( PWMB,240 );
}
void fermo(){
analogWrite( PWMA,50 );
analogWrite( PWMB,50 );
digitalWrite( AIN2,LOW );
digitalWrite( AIN1,LOW );
digitalWrite( BIN2,LOW );
digitalWrite( BIN1,LOW );
}
void gira(){
// Stop per 1/2 secondo
fermo();
delay( 400 );
// Indietro
indietro();
delay( 600 );
// Stop per 1/2 secondo
fermo();
delay( 400 );
// Gira
digitalWrite( AIN2,LOW );
digitalWrite( AIN1,HIGH );
digitalWrite( BIN2,HIGH );
digitalWrite( BIN1,LOW );
analogWrite( PWMA,146 );
analogWrite( PWMB,140 );
delay (1000);
}