Ich hab folgendes Problem, unzwar wie in den anderen Threas schon fast gelöst, geht es darum die WS2812 über den Teensy zu Steuern, die 4 Ringe haben alle einen eigenen Attiny85 auf dennen einige Animationen gespeichert sind, über i2c funktioniert das ganz gut, auch unterschiedlich zusammengestellte animationen werden Super aufgerufen, nun möcht ich auch einen Motor per PWM ansteuern, die eingabe erfolgt über einen Nextion, es sind 10 Tasten bei dem ich die id der Tasten ans Teensy schick um es auszuwerten, aber irgendwas steht da im Konflikt, Motor funktioniert top, aber jetzt werden die Ringe nicht korrekt gesteuert, man muß öfters auf die Taste Drücken bis alle die befehle empfangen haben
#include <Wire.h>
const byte bufferSize = 64;
#include <FrequencyTimer2.h>
int Motor = 6;
void setup() {
Serial2.begin(57600);
Wire.begin();
pinMode(Motor, OUTPUT);
analogWriteResolution(8);
analogWriteFrequency(Motor, 100);
analogWrite(Motor, 229);
Serial2.print("bt0.val=0");
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
}
void loop() {
static uint8_t bIndex;
static uint8_t buffer[bufferSize];
bool complett = false;
if (Serial2.available()) {
uint8_t inChar = Serial2.read();
buffer[bIndex++] = inChar;
if (inChar == 0xFF && (bIndex >= (*buffer == 0x71 ? 8 : 3)) &&
buffer[bIndex - 2] == 0xFF && buffer[bIndex - 3] == 0xFF) {
complett = true;
} else {
complett = (bIndex == bufferSize);
}
}
if (complett) {
switch (buffer[1]) {
case 0 :
analogWrite(Motor, 229);
Serial2.print("t0.txt=");
Serial2.write(0x22);
Serial2.print("Aus");
Serial2.write(0x22);
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
break;
case 1 :
analogWrite(Motor, 26);
Serial2.print("t0.txt=");
Serial2.write(0x22);
Serial2.print("Ein");
Serial2.write(0x22);
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
break;
case 4 : //Fade Red
Wire.beginTransmission(1);
Wire.write('g');
Wire.endTransmission();
Wire.beginTransmission(2);
Wire.write('c');
Wire.endTransmission();
Wire.beginTransmission(3);
Wire.write('c');
Wire.endTransmission();
Wire.beginTransmission(4);
Wire.write('g');
Wire.endTransmission();
break;
case 5 : //Comet
Wire.beginTransmission(1);
Wire.write('a');
Wire.endTransmission();
Wire.beginTransmission(2);
Wire.write('a');
Wire.endTransmission();
Wire.beginTransmission(3);
Wire.write('a');
Wire.endTransmission();
Wire.beginTransmission(4);
Wire.write('a');
Wire.endTransmission();
break;
case 8 : //Police
Wire.beginTransmission(1);
Wire.write('b');
Wire.endTransmission();
Wire.beginTransmission(2);
Wire.write('b');
Wire.endTransmission();
Wire.beginTransmission(3);
Wire.write('b');
Wire.endTransmission();
Wire.beginTransmission(4);
Wire.write('b');
Wire.endTransmission();
break;
case 7 : //Knight
Wire.beginTransmission(1);
Wire.write('c');
Wire.endTransmission();
Wire.beginTransmission(2);
Wire.write('c');
Wire.endTransmission();
Wire.beginTransmission(3);
Wire.write('c');
Wire.endTransmission();
Wire.beginTransmission(4);
Wire.write('c');
Wire.endTransmission();
break;
case 9 : //Start
Wire.beginTransmission(1);
Wire.write('a');
Wire.endTransmission();
Wire.beginTransmission(2);
Wire.write('c');
Wire.endTransmission();
Wire.beginTransmission(3);
Wire.write('c');
Wire.endTransmission();
Wire.beginTransmission(4);
Wire.write('a');
Wire.endTransmission();
case 11 : //Fire
Wire.beginTransmission(1);
Wire.write('b');
Wire.endTransmission();
Wire.beginTransmission(2);
Wire.write('b');
Wire.endTransmission();
Wire.beginTransmission(3);
Wire.write('b');
Wire.endTransmission();
Wire.beginTransmission(4);
Wire.write('b');
Wire.endTransmission();
break;
break;
}
bIndex = 0;
}
}