Hallo,
ich habe probleme mit meinem Leonardo. Ich kann das Ding nicht mehr
programmieren, er hängt irgendwie in eine Schleife.....
Stecke ich das Ding per USB an den Rechner, wirft er sofort
folgende Zeichen aus: ``````````````
Etwas 10 pro Sekunde.
Habe schon alles probiert, Reset und dann uploaden, aber immer kommt
der Fehler: avrdude: usbdev_open(): did not find any USB device "usb"
Bin ratlos.
Keine Ahnung ob wichtig, das war der Code:
#include <Encoder.h> // Encoder, Lade Bibliothek - Web: http://www.pjrc.com/teensy/td_libs_Encoder.html
#include <Keyboard.h> // Keyboard, Lade Bibliothek
#define buttonPin1 4 // Button Encoder 1 - Direkt an PIN 5
#define buttonPin2 4 // Button Encoder 2 - Direkt an PIN 7
#define debounce 20 // Entprellen ms
#define holdTime 2000 // Haltezeite für lange drücken ms
// Button 1 Variablen
int buttonVal1 = 0; // Button 1 Wert lesen
int buttonLast1 = 0; // Button 1 gepufferter Wert
long btnDnTime1; // Button 1 Gedrückte Zeit
long btnUpTime1; // Button 1 Losgelassene Zeit
boolean ignoreUp1 = false; // Losgelassen ignorieren
// Button 2 Variablen
int buttonVal2 = 0; // Button 2 Wert lesen
int buttonLast2 = 0; // Button 2 gepufferter Wert
long btnDnTime2; // Button 2 Gedrückte Zeit
long btnUpTime2; // Button 2 Losgelassene Zeit
boolean ignoreUp2 = false; // Losgelassen ignorieren
Encoder Drehgeber01(2, 3); // Drehgeber 1 - PIN 2 und PIN 3
Encoder Drehgeber02(5, 6); // Drehgeber 2 - PIN 5 und PIN 6
void setup()
{
Serial.begin(9600);
Keyboard.begin();
// Button 1
pinMode(buttonPin1, INPUT);
digitalWrite(buttonPin1, HIGH );
// Button 2
pinMode(buttonPin2, INPUT);
digitalWrite(buttonPin2, HIGH );
}
long positionDrehgeber01 = -999;
long positionDrehgeber02 = -999;
void loop() {
// -----------------
// Drehgeber 01 & 02
// -----------------
long newDrehgeber01, newDrehgeber02;
newDrehgeber01 = Drehgeber01.read();
newDrehgeber02 = Drehgeber02.read();
if (newDrehgeber01 != positionDrehgeber01) // Drehgeber01
{
if (newDrehgeber01 < positionDrehgeber01) // Drehgeber01 dreht nach links
{
Keyboard.press(KEY_UP_ARROW); // KODI: Steuerung Hoch
delay(100);
Keyboard.releaseAll();
}
if (newDrehgeber01 > positionDrehgeber01) // Drehgeber01 dreht nach rechts
{
Keyboard.press(KEY_DOWN_ARROW); // KODI: Steuerung Runter
delay(100);
Keyboard.releaseAll();
}
positionDrehgeber01 = newDrehgeber01;
}
if (newDrehgeber02 != positionDrehgeber02) // Ausgabe Drehgeber02
{
if (newDrehgeber02 < positionDrehgeber02) // Drehgeber02 dreht nach links
{
Keyboard.press('-'); // KODI: Steuerung Lautstärke -
delay(100);
Keyboard.releaseAll();
}
if (newDrehgeber02 > positionDrehgeber02) // Drehgeber02 dreht nach rechts
{
Keyboard.press('+'); // KODI: Steuerung Lautstärke +
delay(100);
Keyboard.releaseAll();
}
}
// if a character is sent from the serial monitor,
// reset both back to zero.
if (Serial.available()) {
Serial.read();
Serial.println("Reset both knobs to zero");
Drehgeber01.write(0);
Drehgeber02.write(0);
}
// -----------------
// Button 1 --------
// -----------------
buttonVal1 = digitalRead(buttonPin1); // Button 1 - Lese Status
// Test for button pressed and store the down time
if (buttonVal1 == LOW && buttonLast1 == HIGH && (millis() - btnUpTime1) > long(debounce))
{
btnDnTime1 = millis();
}
// Test for button release and store the up time
if (buttonVal1 == HIGH && buttonLast1 == LOW && (millis() - btnDnTime1) > long(debounce))
{
if (ignoreUp1 == false) event1btn1();
else ignoreUp1 = false;
btnUpTime1 = millis();
}
// Test for button held down for longer than the hold time
if (buttonVal1 == LOW && (millis() - btnDnTime1) > long(holdTime))
{
event2btn1();
ignoreUp1 = true;
btnDnTime1 = millis();
}
buttonLast1 = buttonVal1;
// -----------------
// Button 2 --------
// -----------------
buttonVal2 = digitalRead(buttonPin2); // Button 2 - Lese Status
// Test for button pressed and store the down time
if (buttonVal2 == LOW && buttonLast2 == HIGH && (millis() - btnUpTime2) > long(debounce))
{
btnDnTime2 = millis();
}
// Test for button release and store the up time
if (buttonVal2 == HIGH && buttonLast2 == LOW && (millis() - btnDnTime2) > long(debounce))
{
if (ignoreUp2 == false) event1btn2();
else ignoreUp2 = false;
btnUpTime2 = millis();
}
// Test for button held down for longer than the hold time
if (buttonVal2 == LOW && (millis() - btnDnTime2) > long(holdTime))
{
event2btn2();
ignoreUp2 = true;
btnDnTime2 = millis();
}
buttonLast2 = buttonVal2;
} // Ende Void(loop)
//=================================================
// Funktionen, wenn Button gedrückt wird
void event1btn1() // Button 1 - Kurz gedrückt
{
Keyboard.press(KEY_RETURN);
delay(100);
Keyboard.releaseAll();
}
void event2btn1() // Button 1 - Lang gedrückt
{
Keyboard.press(KEY_BACKSPACE);
delay(100);
Keyboard.releaseAll();
}
void event1btn2() // Button 2 - Kurz gedrückt
{
Keyboard.press('x');
delay(100);
Keyboard.releaseAll();
}
void event2btn2() // Button 2 - Lang gedrückt
{
Keyboard.press(KEY_F12);
delay(100);
Keyboard.releaseAll();
}
Hoffe jemand kann helfen.