Я был занят написанием кода Arduino, который включает и выключает экран, используя ИК на основе ИК-датчика.Устройство работало до того, как я добавил дополнительный код, чтобы устройство не отправляло ИК-сигнал каждый раз, когда он получал вход от ИК-датчика.Я сделал это в виде «counterSensor», который вы можете найти в коде ниже.
Мое устройство больше не отправляет ИК-сигналы, так как я добавил счетчик.Я попытался найти любые аппаратные сбои (я изменил светодиодный индикатор и протестировал его с помощью обычного синего светодиода. Оба раза он не работал).Я также попытался использовать пример кода из библиотеки IR, который должен работать, но опять ничего не получил.
Я также попробовал все эти методы на другом arduino, но и на этом arduino ничего не получалось.
Может кто-нибудь помочь мне с этим?
заранее спасибо!
Код:
/*
--- Code Geschreven door Julian Berendsen.
--- Code geschreven voor: Fidato
Toelichting:
Deze code is bedoeld voor een device dat ik heb gemaakt wat een tv scherm aan
en uit zet zodra er mensen in een ruimte komen. Ik heb dit device gemaakt als
project dat ik tijdens mijn stage periode bij Fidato heb gemaakt.
*/
#include <IRremote.h>
IRsend irsend;
#define sensorPin 4
#define switchPin 5
int sensorState= 0;
int switchState = 0;
int counterSensor= 0;
void setup() {
pinMode(sensorPin,INPUT);
pinMode(switchPin, INPUT);
Serial.begin(9600);
}
void loop() {
delay(3000);
Serial.println(counterSensor);
sensorState = digitalRead(sensorPin);
switchState = digitalRead(switchPin);
if(switchState == HIGH){
Serial.println("System Active");
if( sensorState == HIGH){
counterSensor++;
if(counterSensor >= 2 && counterSensor <= 5){
tvOn();
}
}
}
if( sensorState == LOW){
counterSensor--;
if(counterSensor <= -2 && counterSensor >= -5){
tvOff();
}
if (counterSensor >= 15){
counterSensor = 10;
}
if (counterSensor <= -15){
counterSensor = -10;
}
if(switchState == LOW){
counterSensor =0;
Serial.println("System inactive");
}}}
/*Void used for sending the IR On signal to the screen: */
void tvOn(){
Serial.println("Turning screen on...");
// Initializes the frequency and signal bursts of the IR remote
int khzON = 38; // 38kHz carrier frequency for the NEC protocol
unsigned int irSignalON[] = {9024 ,4512 ,564 ,564 ,564 ,564 ,564 ,1692 ,564
,564 ,564 ,564 ,564 ,564 ,564 ,564 ,564 ,564 ,564 ,1692 ,564 ,1692 ,564 ,564
,564 ,1692 ,564 ,1692 ,564 ,1692 ,564 ,1692 ,564 ,1692 ,564 ,564 ,564 ,564
,564 ,1692 ,564 ,564 ,564 ,564 ,564 ,564 ,564 ,1692 ,564 ,1692 ,564 ,1692
,564 ,1692 ,564 ,564 ,564 ,1692 ,564 ,1692 ,564 ,1692 ,564 ,564 ,564 ,564
,564 ,39756}; //AnalysIR Batch Export (IRremote) , RAW
// Sends the IR signal
irsend.sendRaw(irSignalON, sizeof(irSignalON) / sizeof(irSignalON[0]),
khzON); //Note the approach used to automatically calculate the size of the
array.
delay(3000);
}
/* Void used for sending the IR off signal to the screen: */
void tvOff(){
Serial.println("Turning screen off...");
// Initializes the frequency and signal bursts of the IR remote
int khzOFF = 38; // 38kHz carrier frequency for the NEC protocol
unsigned int irSignalOFF[] = {9024 ,4512 ,564 ,564 ,564 ,564 ,564 ,1692 ,564
,564 ,564 ,564 ,564 ,564 ,564 ,564 ,564 ,564 ,564 ,1692 ,564 ,1692 ,564 ,564
,564 ,1692 ,564 ,1692 ,564 ,1692 ,564 ,1692 ,564 ,1692 ,564 ,1692 ,564 ,564
,564 ,1692 ,564 ,564 ,564 ,564 ,564 ,564 ,564 ,1692 ,564 ,1692 ,564 ,564 ,564
,1692 ,564 ,564 ,564 ,1692 ,564 ,1692 ,564 ,1692 ,564 ,564 ,564 ,564 ,564
,39756}; //AnalysIR Batch Export (IRremote) , RAW
// Sends the IR signal
irsend.sendRaw(irSignalOFF, sizeof(irSignalOFF) / sizeof(irSignalOFF[0]),
khzOFF); //Note the approach used to automatically calculate the size of the
array.
delay (3000);
}