Ciao a tutti!
Sto cercando di riutilizzare una schedina "Sonar I/O" di un robot mondadori che avevo iniziato a fare tempo fa...
Per riferimento, la scheda in questione è questa:
http://www.lpilsley.co.uk//cybot/sonario.htm
per info più generiche: Scheda sonar in/out robot Cybot
Credo di aver collegato tutto bene ad arduino, non mi resta che pilotare i trasmettitori ultrasuoni con la giusta temporizzazione, e qui c'è il problema. La temporizzazione è spiegata qui:
http://www.cybench.co.uk/cybot/sonar.php
Se ho capito bene quel che devo fare è, ogni 25millisecondi, emettere otto impulsi di durata 12.5microsecondi, in controfase tra il piedino 5 e 6.
Ho provato a buttar giù uno sketch, potreste dirmi se vi sembra corretto il pilotaggio? Sembra non funzionare, e ci sto impazzendo!
#define frontal 0
#define transmit1 12
#define transmit2 13
int sonarRead = 0;
int lastBurst = 0;
int delta = 0;
int lastPulse = 0;
int delta2 = 0;
void setup() {
Serial.begin(9600);
pinMode(frontal, INPUT);
pinMode(transmit1, OUTPUT);
pinMode(transmit2, OUTPUT);
lastBurst = millis();
}
void loop(){
delta = millis() - lastBurst;
if(delta >= 25){ // ogni 25 millisecondi un burst
// qui devo generare 8 impulsi di durata 12.5microsec in controfase sui piedini transmit1 e transmit2
lastPulse = micros();
for(int pulseCount = 0; pulseCount < 8;){
if(pulseCount % 2){
digitalWrite(transmit1, HIGH);
digitalWrite(transmit2, LOW);
}else{
digitalWrite(transmit1, LOW);
digitalWrite(transmit2, HIGH);
}
delta2 = micros() - lastPulse;
if(delta2 >= 12.5){
pulseCount++;
lastPulse = micros();
}
}
lastBurst = millis();
digitalWrite(transmit1, LOW); // lascio a riposo
digitalWrite(transmit2, LOW);
}
sonarRead = analogRead(frontal);
Serial.println(sonarRead);
}
grazie a tutti