Go Down

Topic: Macchina rc+ultrasuoni [consulenza sui sensori da usare] (Read 1 time) previous topic - next topic

?R

Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

cece99


metti i 2 codici, vediamo cosa si può fare

Ok, comunque se vieni su face ti spiego meglio.
A me basterebbe che il sensore dietro mi funzioni durante la retromarcia e se trova un ostacolo mi fa girare subito la macchina :).
Questi sono i due sketch:
Code: [Select]

#define irEmitter 12            // polo positivo emettitore
#define irReceiverN 11          // polo negativo ricevitore
#define irReceiverP 10          // polo positivo ricevitore
long distance = 0;
int interval = 0;

void setup() {
  Serial.begin(9600);              // inizializza seriale a 9600 baud
  pinMode(irEmitter, OUTPUT);      // il led emettitore è un output
  pinMode(irReceiverP, OUTPUT);    // il polo positivo del let ricevitore è un output
  digitalWrite(irReceiverP, LOW);  // e deve essere LOW
}


void focus(int focusPoint) {
interval = focusPoint; 
distance = readLight(true) - readLight(false);
if(distance < 0) distance = 0;
// processing
Serial.println(distance);
}

double readLight(boolean lightOn) {       
digitalWrite(irEmitter, lightOn ? HIGH : LOW);
pinMode(irReceiverN, OUTPUT);
digitalWrite(irReceiverN, HIGH); //carico ricevitore di induttanza
long reading = 0;
pinMode(irReceiverN, INPUT);
digitalWrite(irReceiverN, LOW);
long lightTime = millis();
while((millis() - lightTime) < interval)
  if(digitalRead(irReceiverN) == 0)
   reading++;

return reading;
}
 
void loop() {
focus(115);
}
[code]

[code]
int motor1Pin1 = 3;    // pin 2 on L293D
int motor1Pin2 = 2;    // pin 7 on L293D
int enablePin = 11;    // pin 1 on L293D

#define ECHOPIN 12        // Pin to receive echo pulse
#define TRIGPIN 13        // Pin to send trigger pulse

/*
* setup function
* Initialize the serial line (D0 & D1) at 115200.
* Then set the pin defined to receive echo in INPUT
* and the pin to trigger to OUTPUT.
*/


void setup()
{
    digitalWrite(enablePin, HIGH);
 
  pinMode(ECHOPIN, INPUT);
  pinMode(TRIGPIN, OUTPUT);
     pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);
  pinMode(enablePin, OUTPUT);
}

/*
* loop function.
*
*/
void loop()
{
  // Start Ranging
  digitalWrite(TRIGPIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIGPIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIGPIN, LOW);
  // Compute distance
  float distance = pulseIn(ECHOPIN, HIGH);
  distance= distance/58;
if (distance<15) {
    digitalWrite(motor1Pin1, HIGH);  // set pin 2 on L293D high
    digitalWrite(motor1Pin2, LOW);   // set pin 7 on L293D low
    delay(1000);
    digitalWrite(10,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(9,LOW);
    delay(100);
    digitalWrite(motor1Pin1, LOW);   // set pin 2 on L293D low
    digitalWrite(motor1Pin2, HIGH);  // set pin 7 on L293D high
    delay(2000);
    digitalWrite(10,LOW);
}
else {
     digitalWrite(motor1Pin1, LOW);   // set pin 2 on L293D low
    digitalWrite(motor1Pin2, HIGH);  // set pin 7 on L293D high
}
  delay(200);
}

[code]
[/code][/code][/code]
Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

?R

ok se vieni su skype (facebook non mi piace) tra mezzoretta ti spiego un po' ;)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

cece99


ok se vieni su skype (facebook non mi piace) tra mezzoretta ti spiego un po' ;)

No problem, thank you :D
Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Go Up