Estoy haciendo un sonar con con ATtini85 Digispark y HC-SR04. Tiene un potenciómetro en el pin 5 que es análogo A0.
Comprobé la con digikeyboard la lectura de las variables por separado y distancia = tiempo / 58.2 está ok, pero cuando hago esto distancia = lapso*tiempo / 58.2 me salen unos valores raros cuando muevo el potenciómetro por ejemplo:
El valor del AD debe ir a la cuenta que corresponde, sin modificar nada. Luego si quieres expresarlo en 0-100 porque tienes una distancia máxima como 100% es otro tema.
da valores entre ~3 y 400 centímetros, entonces al multiplicarlo por un rango de 1 a 100, aumentaría el delay... pero veo que 400x100 serían 40 segundos y está mal... El asunto es que el pitido va directamente al oído entonces la diferencia de tiempo debe ser perceptible.
Será esto del mapeo que está dañando la lectura?
Voy probar otros valores y posteo.
Ok. Lee por favor el potenciometro a ver si esta siendo convertido como corresponde.
Solo muestra el valor de analgoRead().
Lo que ocurre que no has considerado que tus cuentas estan desborando y te dan valores negativos.
400x100 = 40000 y definiste distancia como entero. Un entero positivo llega hasta 2^15= 32768 y como le pides 40000 simplemente te da un valor negativo.
El potenciómetro está a punto, va de 0 a 1023 casi siempre (veo que he mejorado la soldadura).
En el tema de int, tienes razón, pero mezclé tantas variables con long e int que ya no recuerdo qué era lo que mejor funcionaba.
Mañana retomo las pruebas.
Por cierto, leí que a los números en las operaciones hay que colocarle una L al primer dígito, pero no encontré teoría soble las variables. Por esto es que tengo varias dudas. Pero en realidad el error proncipal debe ser el desborde.
Espero que alguien le saque provecho a esto. Nota: En otro pin se le puede colocar un motor de teléfono para que vibre en caso que la distancia sea menor que 20 cm..