Köszönöm a válaszokat, sikerült közben magamtól megoldani a problémát.
Ez a kód az applikációmmal jelenleg megfelelően működik, úgy hogy most már csak az a kérdés, hogy lehet kisebb?
Vázlat használ 2920 bájt (9%) -ot a program tárhelyből. A maximum 30720 bájt.
A globális változók 200 bájt (9%)-ot használnak a dinamikus memóriából, 1848 bájtot hagyva a helyi változóknak. A maximum 2048 bájt.
Kicsit átláthatatlan, úgy hogy megpróbálok pár információt leírni ami fontos lehet:
Bluetooth-on keresztül az app. 2x1 byte-os "számsorokat" küld el. Az első byte az azonositó azt határozza meg, hogy mi történjen a következő 1 byte értékével. Az azonosítok 128-139-ig a feldogozható adatok pedig 140-255-ig terjednek. A 128,129,130 azonosítok a 3 kimeneten megjelenő pwm jelért felelősek. A 131-132 azonosítok a ki és bekapcsolás hosszáért, míg a 133 és a 134 azonosítok a be-és kikapcsolás engedélyezésért felelősek.
Lehet, hogy egy meglehetne oldani egyszerűbben nekem ez jutott eszembe, de szívesen meghallgatok más ötleteket is.
Kód: Egész kijelölése
unsigned long lastMillis1;
unsigned long lastMillis2;
int c = 50;
int d = 134;
void setup()
{
DDRD = DDRD | B11101000;
PORTD = B11101000;
Serial.begin(9600);
lastMillis1 = millis();
lastMillis2 = millis();
}
void loop() {
int a;
int b;
if (Serial.available() > 1) {
a = Serial.read();
b = Serial.read();
Serial.println(a);
Serial.println(b);
}
if (a == 128 | a == 129 | a == 130) {
b = map (b, 255, 140, 0, 255);
}
if (a == 131 | a == 132) {
c = map (b, 140, 255, 50, 1000);
}
if (a == 133 | a == 134) {
d = b;
Serial.println(d);
}
if (a == 128) {
analogWrite(5, b);
}
if (a == 129) {
analogWrite(6, b);
}
if (a == 130) {
analogWrite(3, b);
}
if (d == 133) {
if ((millis() - lastMillis1) >= c) {
digitalWrite(7, !digitalRead(7));
lastMillis1 = millis();
}
}
else
digitalWrite(7, HIGH);
}