Van egy korábbi projektem, ami eddig működött. A hw úgy néz ki, hogy:
ADÓ: Nano + 433 jeladó + 10K thermistor + visszajelző led
VEVŐ: UNO + 433 vevő +10k thermistor
Ez így tökéletesen működött. A vevőm egy Mega volt, egy 16x2 I2C lcd-vel. A megát el kellett használnom egy másik projekthez, most egy UNO-t próbálok berakni helyette, de én akárhogy nézem a dolgot, se a hw-ben, se a sw-ben nem találom a hibát. Már 20x szétszedtem, újrakábeleztem, újraírtam, másik változókkal, lecseréltem az uno-t nanora, kicseréltem a 10k-s thermistort, kicseréltem a jeladót, kicseréltem a vevőt. Kifogytam az ötletekből....
A jeladón semmit se változtattam, a programot nem írtam át. A vevő programja lent van. A vevő nem kap jelet, az if ciklus üresen forog...
A jeladó kódja (ezen nem változtattam semmit:
Kód: Egész kijelölése
#include <VirtualWire.h>
float temp;
char msg[6];
float R1 = 10000, logR2, R2, T, Tc, Tf;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
int Vo, LedPin = 12, sensor = 0; ;
void setup()
{
pinMode(LedPin, OUTPUT);
Serial.begin(9600);
vw_set_tx_pin(2);
vw_setup(2000);
}
void loop()
{ digitalWrite(LedPin, LOW);
Vo = analogRead (sensor);
R2 = R1 * (1023.0 / (float)Vo - 1.0);
logR2 = log(R2);
T = (1.0 / (c1 + c2 * logR2 + c3 * logR2 * logR2 * logR2));
Tc = T - 273.15;
Serial.print ("Hőmérséklet: ");
Serial.println (Tc);
dtostrf(Tc, 6, 2, msg);
Serial.println("Adatkonvertálás");
digitalWrite(LedPin, HIGH);
vw_send((uint8_t *)msg, strlen(msg));
Serial.println("Adatküldés...");
vw_wait_tx();
Serial.println("Adat elküldve");
Serial.println(" ");
digitalWrite(LedPin, LOW);
delay(2000);
}
Kód: Egész kijelölése
#include <VirtualWire.h>
void setup()
{
delay(1000);
Serial.begin(9600);
vw_set_rx_pin(2);
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))
{
int i;
Serial.print("ADAT: ");
for (i = 0; i < buflen; i++)
{
Serial.print(buf[i]);
Serial.print(' ');
}
Serial.println();
}
delay(2000);
}