[color=green]Moderador:
Independientemente de tu problema de hardware/software, hay un modo de presentar los códigos en este foro y no es el que has usado.
Por favor, lee las Normas del foro y publica/edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado/editado, lo cortas y click en (<CODE/>)
[/color]
Esto no aporta nada al código asi que retíralo.
Monitor.println(digitalRead(echo));
Si crees que vas a leer un cambio con un print estas muy equivocado.
Si el sistema no te devuelve nada, tiempo es 0 y el resultado será raro
agrega esto, luego de leer el tiempo
if (tiempo == 0) {
Monitor.println("Sin señal");
return;
}
La secuencia de trigger deberia ser así
digitalWrite(trig,LOW);
delayMicroseconds(2);
digitalWrite(trig,HIGH);
delayMicroseconds(10);
digitalWrite(trig,LOW);
Tal vez estos cambios no resuelvan nada. Sería lo mas lógico.
Asi que haz un simple Blink.ino y prueba el pin trig a ver si cambia o no. Puede que tengas algo mal.
Acá tienes un código para probar, los pines que usa son distintos pero ajústalos a los que tienes cableados.
#include <Arduino_RouterBridge.h>
#include <Servo.h>
#define TRIG_PIN 9
#define ECHO_PIN 10
#define SERVO_PIN 6
Servo servo;
int angle = 30;
bool forward = true;
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
servo.attach(SERVO_PIN);
servo.write(angle);
Serial.begin(115200);
Bridge.begin();
Bridge.provide("get_radar", get_radar);
}
// RPC FUNCTION CALLED FROM PYTHON
String get_radar() {
// Move servo
servo.write(angle);
if (forward) angle++;
else angle--;
if (angle >= 150) forward = false;
if (angle <= 30) forward = true;
delay(10);
// Ultrasonic
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
unsigned long start = micros();
while (digitalRead(ECHO_PIN) == LOW) {
if (micros() - start > 30000) return String(angle) + ",-1";
}
unsigned long echoStart = micros();
while (digitalRead(ECHO_PIN) == HIGH) {
if (micros() - echoStart > 30000) return String(angle) + ",-1";
}
unsigned long duration = micros() - echoStart;
float distance = duration * 0.0343 / 2;
return String(angle) + "," + String(distance);
}
void loop() {}
Mira todo el artículo