Az a problémám akadt, hogy valamiért nem elég elküldenem egyszer a kapcsoló kódot, hanem többször. De ha többször küldöm el, akkor meg dupla nyomásnak veszi és be-, majd rögtön kikapcsolja a vetítést.
Ráadásul hiába állítom be az elején, hogy a 40-es hexakódot küldje vissza, csak 0-át küld ha sikerül teljesíteni a feladatot.
Íme a kódom (afo Bluetooth-os kódját vettem alapul):
Kód: Egész kijelölése
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
bool start = false;
bool lenyomva = false;
char input[4];
bool sent = true;
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 10);
display.println("Betoltes......");
display.display();
delay(500);
pinMode(2, INPUT);
pinMode(13, OUTPUT);
pinMode(3, INPUT);
Serial.begin(2400);
/*for (int i=0;i<10;i++)
{
display.clearDisplay();
display.print(i);
display.display();
delay(1000);
}*/
/*Serial.write(0x21);
Serial.write(0x00);
Serial.write(0x40);
Serial.write(0x40);*/
delay(500);
display.clearDisplay();
display.println("Mehet!");
display.display();
display.clearDisplay();
}
void loop() {
while (Serial.available())
{
if (start == false)
{
Serial.write(0x21);
Serial.write(0x00);
Serial.write(0x00);
Serial.write(0x00);
start = true;
}
/*display.clearDisplay();
display.setCursor(0, 10);
display.println(Serial.readString());
display.display();*/
Serial.readBytes(input, 3);
if ((input[0] == 68) & (input[1] == 73) & (input[2] == 68))
{
/*display.clearDisplay();
display.println("DI");
display.display();*/
if (digitalRead(2) == LOW)
{
digitalWrite(13, HIGH);
sent = false;
/*while (digitalRead(2) != HIGH);
digitalWrite(13, LOW);*/
//delay(200);
}
}
if (sent != true)
{
for(int i=0;i<4;i++) {
Serial.write(0x01);
Serial.write(0x00);
Serial.write(0x01); }
}
if ((input[0] == 0) | (input[1] == 0) | (input[2] == 0))
{
sent = true;
digitalWrite(13, LOW);
while (digitalRead(2) != HIGH);
}
}
}
Válaszaitokat előre is köszönöm!
Üdv,
Menyhárt Máté