Go Down

Topic: Mini Project: Ultrasounduino (Read 320 times) previous topic - next topic

Alex96T

Buonasera, volevo pubblicare il mio primo progetto, ho preso spunto da un progetto simile. Non è un gran che ma è un inizio. Lo pubblico principalmente per ricevere consigli e magari ampliarlo.
Ho allegato lo schema fatto con Fritzing e un immagine del progetto, ho messo una fotoresistenza che per ora non uso.

Materiale:

Arduino Uno rev 3
Speaker
Ultrasuoni HC-SR04
Potenziometro 10k
Pulsante
2 Led
2 Resistenze 330k ohm
Resistenza 220 ohm
Fotoresistenza(per ora non utilizzata)


Code:

Code: [Select]
//Ultrasounduino v0.3
//Alessandro Todisco
//06.10.13

#define echoPin 11  // Echo Pin
#define trigPin 12  // Trigger Pin
#define speaker 8   //speaker
#define button 7    //pulsante
#define led_r 6     //led rosso
#define led_g 5     //led verde
#define pot A1      //potenziometro
//#define fot A0      //fotoresistenza

int note[200];   
int i;
int x=100;
int maximumRange = 400;    // range massimo
int minimumRange = 0;      // range minimo
long duration, distance;   // tempo per calcolare la distanza
int comodo;
long lastDebounceTime = 0; 
long debounceDelay = 200;   

void setup(){
//  pinMode(fot,INPUT);  //inizializzo fotoresistenza
  pinMode(pot,INPUT);     //inizializzo potenziometro
  pinMode(button,INPUT);  //inizializzo bottone
  pinMode(led_r,OUTPUT);  //led red
  pinMode(led_g,OUTPUT);  //green led
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
  for(i=0;i<199;i++){     //CARICO IL VETTORE NOTE CON UNA FRECQUENZA DI +5
    note[i]=x;
    x=x+5;
  }
  comodo=0;
  }

void loop() {

  int rb=digitalRead(button);
   if((rb==HIGH)&&(comodo==0)){
     lastDebounceTime= millis();
     rb=LOW;
       //LED
     digitalWrite(led_r,LOW);
     digitalWrite(led_g,HIGH);
     do{
       int dur = analogRead(pot);     //ACQUISIZIONE POTENZIOMETRO
       if(dur<45){dur=45;}            //AL DI SOTTO DI 45 MILLI SECONDI LA CASSA STRIDULA
       digitalWrite(trigPin, LOW);      //ACQUISIZIONE DISTANZA ULTRASUONI
       delayMicroseconds(2);
       digitalWrite(trigPin, HIGH);
       delayMicroseconds(10);
       digitalWrite(trigPin, LOW);
       duration = pulseIn(echoPin, HIGH);
       distance = duration/58.2;           //CALCOLO DELLA DISTANZA
       //VERIFICO CHE LA IL RANGE SIA VALIDO
       if (distance >= maximumRange || distance <= minimumRange){   
         tone(speaker, note[198], 1000);   //SUONO
       }
       else {
         tone(speaker, note[distance], 1000);   //SUONO
       }
       //Debugging
       //Serial.println(distance);
       delay(dur);
       if((millis()- lastDebounceTime)>debounceDelay){   //VERIFICO SE SIA
         rb=digitalRead(7);
       }
     }
     while(rb!=HIGH);
     comodo=1;
     }
   else if((rb==HIGH)&&(comodo==1)){
      //LED
      digitalWrite(led_r,HIGH);
      digitalWrite(led_g,LOW);
      Serial.println("OFF");
      comodo=0;
      delay(1000);
   } 

}


Se avete voglia fatemi sapere cosa ne pensate ^^

uwefed

Ma, spiegaci anche cosa fa di preciso il Tuo progetto.
A cosa serve il Ethernet Shield?
Ciao Uwe

uwefed

#2
Oct 08, 2013, 11:53 pm Last Edit: Oct 08, 2013, 11:54 pm by uwefed Reason: 1
Bello mio, i LED non si attaccano MAI senza resistenza alle uscite di Arduino!!!!
Non puoi usare i pin 11 e 12 se usi la Etherneth Shield.
Ciao Uwe

Alex96T

Dunque,  ho aggiunto le resistenze.  La etherneth non la uso per questo progetto. Lo speaker emette un suono suono sempre più acuto quanto sarà la distanza rilevata dall'ultrasuoni.

fermino

#4
Oct 09, 2013, 05:59 pm Last Edit: Oct 12, 2013, 11:20 pm by fermino Reason: 1
bello!
così non si deve guardare nessun display per sapere la distanza.

recentemente ho visto un progetto simile dove con 2 ultrasound, arduino e uno shield audio-synth hanno realizzato una specie di theremin, http://en.wikipedia.org/wiki/Theremin

Go Up