Ho un problema con il codice con un sensore di distanza (quelli che hanno due coni simili a stereo), ho provato a creare un codice che ogni volta che il sensore invia nel serial monitor 4cm lui ti deve scrivere DIETROFRONT. Allego il codice
#include "SR04.h"
#define TRIG_PIN 12
#define ECHO_PIN 11
SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);
long a;
int b;
void setup() {
Serial.begin(9600);
delay(1000);
}
void loop() {
a=sr04.Distance();
Serial.print(a);
Serial.println("cm");
//int b = a;
delay(1000);
if (digitalRead("4cm"));
{
Serial.println("DIETROFRONT");
}
}
Intanto chiarisci cos'è (qual è) quella libreria "SR04".
Poi per verificare se il problema possa essere nel sensore, nel collegamento, o altro (la libreria?), prova un codice semplice di esempio, tipo QUESTO e vedi se ti dà i risultati che ti aspetti.
Infine, come potrai leggere facendo una ricerca nel forum, i sensori SR04 sono molto spesso inaffidabili e si "bloccano" anche di tanto in tanto. Meglio acquistare i SRF05 che costano alcuni cent in più ma funzionano. Se vuoi, puoi anche provare anche QUESTA libreria che scrissi anni fa proprio per cercare di "compensare" i difetti degli SR04.
Era già allegata nel DVD che mi ha fornito il kit.
Da quello che mi sembra di capire il digitalWrite viene attivato a prescindere se if riceve segnale o meno
... digitalRead() legge lo stato di un pin e ritorna HIGH o LOW a secondo di detto stato ... i cm NON c'entrano niente.
Serial.read() legge UN SINGOLO carattere e te lo restituisce quindi ... NON potrà mai ritornarti una stringa di caratteri.
Mi spiace, ma se non dedichi un po' di tempo a studiare non vai da nessuna parte ... non è supponendo o inventando cosa fa una funzione che puoi scrivere un programma.
Nel REGOLAMENTO, al punto 16.1, trovi sia dei pdf che puoi scaricare e studiare, sia un ottimo libro eventualmente da acquistare