Dobrý den,
chci pochopit a zprovoznit komunikaci pomocí těchto modulů MX-FS-03V & MX-05.
Myslím, že tuto problematiku do určité míry chápu, zatím to zkouším na primitivním programu:
Vysílač:
void setup() {
pinMode(2, OUTPUT);
pinMode(3, INPUT);
digitalWrite(3, LOW);
}
void loop() {
if (digitalRead(3)){
String packet = "10011100";
sendOneByte(packet);
}
}
void sendOneByte(String message){
for(int i = 0; i < 8; i++){
if (message[i] == '0'){
digitalWrite(2, HIGH); // 0
delayMicroseconds(400);
digitalWrite(2, LOW); // break
delayMicroseconds(600);
} else {
digitalWrite(2, HIGH); // 1
delayMicroseconds(1000);
digitalWrite(2, LOW); // break
delayMicroseconds(600);
}
}
digitalWrite(2, LOW); // One byte break
delayMicroseconds(1500);
}
Přijímač:
volatile byte packet;
void setup() {
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
pinMode(2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2), flash, CHANGE);
}
void loop() {
if (packet == 0b10011100){
digitalWrite(13, HIGH);
delay(2000);
digitalWrite(13, LOW);
packet = 0b00000000;
}
}
void flash(){
if(pulseIn(2, HIGH) > 500){
packet <<= 1; // 1
packet |= 0b00000001;
} else {
packet <<= 1; // 0
packet &= 0b11111110;
}
}
Pokud odešlu byte, ledka(pin 13) se rozsvítí, ale arduino jako by se zaseklo a lediodu nevypne, i když dle mého by mělo, ať se děje co se děje.
Nevíte prosím, kde by mohla být chyba?
Děkuji.