Wątek nr1 - odbiornik: odbiornik sygnału RF przestaje odbierać sygnał po wykonaniu części kodu.
Układ odbiornika oparty jest o arduino nano z atmegą328, popularny odbiornik RF100A, oraz czytnik kart SD. Po wciśnięciu przycisku na nadajniku, odbiornik powinien odtworzyć dźwięk zapisany na karcie pamięci i tak się dzieje ale tylko raz. Po wykonaniu części kodu odpowiadającej za odtworzenie dźwięku, odbiornik przestaje odbierać sygnał z nadajnika. Chodzi mi o to żeby po zakończeniu odtwarzania dźwięku na odbiorniku, odbiornik wznawiał odbiór sygnału z nadajnika.
Kod odbiornika
Kod: Zaznacz cały
#include <VirtualWire.h>
#include "SD.h"
#define SD_ChipSelectPin 4
#include "TMRpcm.h"
#include "SPI.h"
TMRpcm tmrpcm;
#define receive_pin 3
int state = 0;
void setup()
{
Serial.begin(9600);
tmrpcm.speakerPin = 9;
Serial.begin(9600);
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("Blad odczytu SD");
return;
}
else {
Serial.println("SD OK");
}
Serial.println("RF SETUP");
vw_set_rx_pin(receive_pin);
vw_setup(2000);
vw_rx_start();
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)) {
Serial.println(buf[5]);
if (buf[5] == 49) {
tmrpcm.setVolume(1);
tmrpcm.play("09.wav", 30);
do {
state = tmrpcm.isPlaying();
Serial.println("odtwarzanie");
} while (state == 1);
tmrpcm.disable();
Serial.println("stop");
}
}
}
Kod nadajnika:
Kod: Zaznacz cały
#include <VirtualWire.h>
#define transmit_pin 10
#define button_pin 7
void setup()
{
vw_set_tx_pin(transmit_pin);
vw_setup(2000);
pinMode(led_pin, OUTPUT);
pinMode(button_pin, INPUT_PULLUP);
}
void loop()
{
String on = "123451";
String off = "123450";
char on_arr[23];
char off_arr[23];
if (digitalRead(button_pin)) {
Serial.println("OFF");
off.toCharArray(off_arr, on.length() + 1);
vw_send((uint8_t*)off_arr, strlen(off_arr));
vw_wait_tx();
}
else {
Serial.println("ON");
on.toCharArray(on_arr, on.length() + 1);
vw_send((uint8_t*)on_arr, strlen(on_arr));
vw_wait_tx();
}
delay(100);
}