Hallo erstmal ins Forum!
Ich habe das Thema gerade gefunden. Vermutlich wurde das Problem bereits gelöst. Aber da ich selbst noch eine Frage habe, erstelle ich dennoch einen Beitrag. Vorweg: Ich habe eigentlich Null Ahnung vom Programmieren und nur etwas Wissen über Elektronik.
Ich möchte eine Schaltung erstellen, die zwei Temperaturen (oben und unten) im Raum misst und vergleicht. Bei einem eingestellten Deltawert soll ein oben im Raum angebrauchter Ventilator geschaltet werden. Den Temperaturvergleich habe ich schon zusammengestellt. Leider kann ich den Lüfter nicht über ein Relais schalten. Daher habe ich mir an der IR Schaltung fast die Zähne ausgebissen. Ich habe mithilfe von IRremote.h die Fernbedienung ausgelesen (ReceiveDump aus den Beispielen). Leider entspricht der Code scheinbar keiner bekannten Codierung. Den Code habe ich dann als Raw gesendet. Es hat einfach nicht funktioniert. Ich habe dann die Signale in Excel ausgewertet und verglichen. Klar wäre ein Oszi nicht schlecht. Nach einer Korrekturschleife der Signalzeiten treffen sich Soll und Istwert ganz gut. Zuvor gab es einige zeitliche Abweichungen, die um 30 bis 80 Microns lagen. Aber es hat dennoch nicht funktioniert. Nach langem probieren habe ich den Signalcode zweimal in das Array geschrieben. Und damit hat es dann endlich funktioniert. Beim Ausschaltcode habe ich nichtmal das Timing angepasst.
Kann es sein, dass der Ventilator den Code mindestens 2x empfangen will? Oder habe ich den Code noch nicht verstanden und müsste eigentlich einen andern Bereich der Bitkette senden? Ich habe auch schon versucht vorne oder hinten an den Bitketten Zahlen weg zu lassen. Aber dann geht es nicht mehr. Was meint ihr dazu? Unten der Vergleich dessen, was ich mit Receive Dump aus der FB ausgelesen habe und dessen, was gesendet wird und ich mit einem zweiten Arduino wiederum mit Receive Dump ausgelesen habe
So sieht des Testprogramm für das Senden aus:
#include <Arduino.h>
#include "PinDefinitionsAndMore.h" // Define macros for input and output pin etc.
#include <IRremote.hpp>
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
delay(4000); // To be able to connect Serial monitor after reset or power up and before first print out. Do not wait for an attached Serial Monitor!
IrSender.begin(); // Start with IR_SEND_PIN as send pin and enable feedback LED at default feedback LED pin
Serial.println(F("Ready to send IR signals at pin " STR(IR_SEND_PIN)));
}
void loop() {
Serial.println(F("Send as microseconds array - On"));
Serial.flush();
const uint16_t rawDataOn[] = {1276, 408, 1272, 412, 428, 1252, 1252, 428, 1272, 408, 432, 1256, 424, 1264, 440, 1244, 440, 1260, 456, 1236, 1300, 388, 440, 8088, 1276, 408, 1272, 412, 428, 1252, 1252, 428, 1272, 408, 432, 1256, 424, 1264, 440, 1244, 440, 1260, 456, 1236, 1300, 388, 440, 8088 };
IrSender.sendRaw(rawDataOn, sizeof(rawDataOn) / sizeof(rawDataOn[0]), 38);
delay(3000);
Serial.println(F("Send as microseconds array - Off"));
Serial.flush();
const uint16_t rawDataOff[] = {1344, 360, 1340, 352, 496, 1200, 1344, 356, 1340, 356, 496, 1200, 496, 1228, 444, 1228, 468, 1228, 468, 1256, 464, 1232, 1316, 7192, 1344, 360, 1340, 352, 496, 1200, 1344, 356, 1340, 356, 496, 1200, 496, 1228, 444, 1228, 468, 1228, 468, 1256, 464, 1232, 1316, 7192 };
IrSender.sendRaw(rawDataOff, sizeof(rawDataOff) / sizeof(rawDataOff[0]), 38);
delay(3000);
}