Hallo und guten Morgen vielleicht kann mir einer helfen ich kriege einfach den Sketch nicht auf den arduino nano geladen . Ich muss dazu sagen ich bin noch Neuling in diesen Gebiet darum bitte helft mir .
Danke im voraus
Hallo und guten Morgen vielleicht kann mir einer helfen ich kriege einfach den Sketch nicht auf den arduino nano geladen . Ich muss dazu sagen ich bin noch Neuling in diesen Gebiet darum bitte helft mir .
Danke im voraus
Hallo
Poste den Sketch und die Fehlermeldung in Textform.
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
mfg ein Moderator.
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define SERVOMIN 150 // This is the 'minimum' pulse length count (out of 4096)
#define SERVOMAX 450 // This is the 'maximum' pulse length count (out of 4096)
#define USMIN 600 // This is the rounded 'minimum' microsecond length based on the minimum pulse of 150
#define USMAX 2400 // This is the rounded 'maximum' microsecond length based on the maximum pulse of 600
#define SERVO_FREQ 50 // Analog servos run at ~50 Hz updates
uint8_t servonum = 0;
int buttonPin = 2;
int ledPin = 6;
int buttonState = 0;
int globalPos = 1;
unsigned long previousMillis = 0;
unsigned long interval = 5000;
int a = 60;
int mainServoL = 0;
int mainServoR = 1;
int mainServoClosed = 5;
int mainServoOpen = 90;
int servoBrowCenter = 4;
int servoBrowCenterOpen = 40;
int servoBrowCenterClosed = 120;
int animDelay = 1;
void setup() {
Serial.begin(9600);
Serial.println("Boot Up");
pwm.begin();
pwm.setOscillatorFrequency(27000000);
pwm.setPWMFreq(SERVO_FREQ);
pinMode(buttonPin, INPUT_PULLUP);
delay(50);
pwm.sleep();
}
int getAngleToPulse(int angle) {
return map(angle, 0, 180, SERVOMIN, SERVOMAX);
}
int getAngleToMilli(int angle) {
return map(angle, 0, 180, USMIN, USMAX);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == 0) {
Serial.println("Wake up");
pwm.wakeup();
if (globalPos > 0) {
Serial.println("Opening");
// CHEEKS
for (uint16_t pulselen = 90; pulselen >= 20; pulselen--) {
pwm.setPWM(9, 0, getAngleToPulse(90 + 20 - pulselen));
pwm.setPWM(8, 0, getAngleToPulse(pulselen));
}
delay(animDelay);
Serial.println("1. Cheeks Open");
// NOSE Side
for (uint16_t pulselen = 86; pulselen >= 10; pulselen--) {
pwm.setPWM(6, 0, getAngleToPulse(86 + 10 - pulselen));
pwm.setPWM(7, 0, getAngleToPulse(pulselen));
}
delay(animDelay);
Serial.println("2. Nose Side Open");
//BROW Center
for (uint16_t pulselen = servoBrowCenterClosed; pulselen >= servoBrowCenterOpen; pulselen--) {
pwm.setPWM(servoBrowCenter, 0, getAngleToPulse(pulselen));
}
delay(animDelay);
Serial.println("3. Brow Center Open");
// BROW Side
for (uint16_t pulselen = 30; pulselen <= 90; pulselen++) {
pwm.setPWM(2, 0, getAngleToPulse(pulselen));
pwm.setPWM(3, 0, getAngleToPulse(30 + 90 - pulselen));
}
delay(animDelay);
Serial.println("4. Brow Side Open");
// NOSE Center
for (uint16_t pulselen = 110; pulselen >= 1; pulselen--) {
pwm.setPWM(5, 0, getAngleToPulse(pulselen));
}
delay(animDelay);
Serial.println("5. Nose Center Open");
// EYES
analogWrite(ledPin, 0);
// MAIN SERVOS
for (uint16_t microsec = 750; microsec < 1950; microsec +=5) {
pwm.writeMicroseconds(mainServoL, microsec);
pwm.writeMicroseconds(mainServoR, (1950+750-microsec));
}
globalPos = 0;
delay(animDelay);
Serial.println("6. Main Open");
//delay(100);
//Serial.println("Sleep");
//pwm.sleep();
} else {
Serial.println("Closing");
//MAIN SERVOS
for (uint16_t microsec = 1950; microsec > 750; microsec-=5) {
pwm.writeMicroseconds(mainServoL, microsec);
pwm.writeMicroseconds(mainServoR, (1950+750-microsec));
}
delay(animDelay);
//NOSE Center
for (uint16_t pulselen = 1; pulselen <= 110; pulselen++) {
pwm.setPWM(5, 0, getAngleToPulse(pulselen));
}
delay(animDelay);
// BROW Side
for (uint16_t pulselen = 90; pulselen >= 30; pulselen--) {
pwm.setPWM(2, 0, getAngleToPulse(pulselen));
pwm.setPWM(3, 0, getAngleToPulse(30 + 90 - pulselen));
}
delay(animDelay);
for (uint16_t pulselen = servoBrowCenterOpen; pulselen <= servoBrowCenterClosed; pulselen++) {
pwm.setPWM(servoBrowCenter, 0, getAngleToPulse(pulselen));
}
delay(animDelay);
// NOSE Side
for (uint16_t pulselen = 10; pulselen <= 86; pulselen++) {
pwm.setPWM(6, 0, getAngleToPulse(86 + 10 - pulselen));
pwm.setPWM(7, 0, getAngleToPulse(pulselen));
}
delay(animDelay);
//CHEEKS
for (uint16_t pulselen = 20; pulselen <= 90; pulselen++) {
pwm.setPWM(9, 0, getAngleToPulse(90 + 20 - pulselen));
pwm.setPWM(8, 0, getAngleToPulse(pulselen));
}
delay(animDelay);
//EYES
analogWrite(ledPin, 255);
globalPos = 1;
delay(100);
Serial.println("Sleep");
pwm.sleep();
}
delay(500);
}
delay(10);
}
ist es so richtig ?
Du kriegst schon den Sketch nicht kompiliert und gelinkt, da musst Du über das Hochladen gar nicht nachdenken.
Sieht so aus, als wäre mindestens eine der für den Sketch benötigten Libraries nicht alle korrekt installiert.
Arduino: 1.8.19 (Windows 10), Board: "Arduino Nano, ATmega328P"
mk5_sketch_11-28-2021:2:10: fatal error: Adafruit_PWMServoDriver.h: No such file or directory
#include <Adafruit_PWMServoDriver.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
exit status 1
Adafruit_PWMServoDriver.h: No such file or directory
Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
Nicht ganz.
[code]
und [/code]
vor und nach dem Sketch müssen jeweils auf einer eigenen Zeile stehen. Die Schaltfläche </>
im Editor bewirkt für einen markierten Textteil das Gleiche.
Die Fehlermeldung solltest Du auch als Code posten - den Beitrag kannst Du auch nachträglich editieren.
Und zum Schluß:
Dieser Bericht wäre detaillierter,...
Das würde ich beherzigen.
Edit: Willkommen im Forum!
und das heißt im klartext ich muss die libraries installieren ?
#include <Wire.h> #include <Adafruit_PWMServoDriver.h> Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); #define SERVOMIN 150 // This is the 'minimum' pulse length count (out of 4096) #define SERVOMAX 450 // This is the 'maximum' pulse length count (out of 4096) #define USMIN 600 // This is the rounded 'minimum' microsecond length based on the minimum pulse of 150 #define USMAX 2400 // This is the rounded 'maximum' microsecond length based on the maximum pulse of 600 #define SERVO_FREQ 50 // Analog servos run at ~50 Hz updates uint8_t servonum = 0; int buttonPin = 2; int ledPin = 6; int buttonState = 0; int globalPos = 1; unsigned long previousMillis = 0; unsigned long interval = 5000; int a = 60; int mainServoL = 0; int mainServoR = 1; int mainServoClosed = 5; int mainServoOpen = 90; int servoBrowCenter = 4; int servoBrowCenterOpen = 40; int servoBrowCenterClosed = 120; int animDelay = 1; void setup() { Serial.begin(9600); Serial.println("Boot Up"); pwm.begin(); pwm.setOscillatorFrequency(27000000); pwm.setPWMFreq(SERVO_FREQ); pinMode(buttonPin, INPUT_PULLUP); delay(50); pwm.sleep(); } int getAngleToPulse(int angle) { return map(angle, 0, 180, SERVOMIN, SERVOMAX); } int getAngleToMilli(int angle) { return map(angle, 0, 180, USMIN, USMAX); } void loop() { buttonState = digitalRead(buttonPin); if (buttonState == 0) { Serial.println("Wake up"); pwm.wakeup(); if (globalPos > 0) { Serial.println("Opening"); // CHEEKS for (uint16_t pulselen = 90; pulselen >= 20; pulselen--) { pwm.setPWM(9, 0, getAngleToPulse(90 + 20 - pulselen)); pwm.setPWM(8, 0, getAngleToPulse(pulselen)); } delay(animDelay); Serial.println("1. Cheeks Open"); // NOSE Side for (uint16_t pulselen = 86; pulselen >= 10; pulselen--) { pwm.setPWM(6, 0, getAngleToPulse(86 + 10 - pulselen)); pwm.setPWM(7, 0, getAngleToPulse(pulselen)); } delay(animDelay); Serial.println("2. Nose Side Open"); //BROW Center for (uint16_t pulselen = servoBrowCenterClosed; pulselen >= servoBrowCenterOpen; pulselen--) { pwm.setPWM(servoBrowCenter, 0, getAngleToPulse(pulselen)); } delay(animDelay); Serial.println("3. Brow Center Open"); // BROW Side for (uint16_t pulselen = 30; pulselen <= 90; pulselen++) { pwm.setPWM(2, 0, getAngleToPulse(pulselen)); pwm.setPWM(3, 0, getAngleToPulse(30 + 90 - pulselen)); } delay(animDelay); Serial.println("4. Brow Side Open"); // NOSE Center for (uint16_t pulselen = 110; pulselen >= 1; pulselen--) { pwm.setPWM(5, 0, getAngleToPulse(pulselen)); } delay(animDelay); Serial.println("5. Nose Center Open"); // EYES analogWrite(ledPin, 0); // MAIN SERVOS for (uint16_t microsec = 750; microsec < 1950; microsec +=5) { pwm.writeMicroseconds(mainServoL, microsec); pwm.writeMicroseconds(mainServoR, (1950+750-microsec)); } globalPos = 0; delay(animDelay); Serial.println("6. Main Open"); //delay(100); //Serial.println("Sleep"); //pwm.sleep(); } else { Serial.println("Closing"); //MAIN SERVOS for (uint16_t microsec = 1950; microsec > 750; microsec-=5) { pwm.writeMicroseconds(mainServoL, microsec); pwm.writeMicroseconds(mainServoR, (1950+750-microsec)); } delay(animDelay); //NOSE Center for (uint16_t pulselen = 1; pulselen <= 110; pulselen++) { pwm.setPWM(5, 0, getAngleToPulse(pulselen)); } delay(animDelay); // BROW Side for (uint16_t pulselen = 90; pulselen >= 30; pulselen--) { pwm.setPWM(2, 0, getAngleToPulse(pulselen)); pwm.setPWM(3, 0, getAngleToPulse(30 + 90 - pulselen)); } delay(animDelay); for (uint16_t pulselen = servoBrowCenterOpen; pulselen <= servoBrowCenterClosed; pulselen++) { pwm.setPWM(servoBrowCenter, 0, getAngleToPulse(pulselen)); } delay(animDelay); // NOSE Side for (uint16_t pulselen = 10; pulselen <= 86; pulselen++) { pwm.setPWM(6, 0, getAngleToPulse(86 + 10 - pulselen)); pwm.setPWM(7, 0, getAngleToPulse(pulselen)); } delay(animDelay); //CHEEKS for (uint16_t pulselen = 20; pulselen <= 90; pulselen++) { pwm.setPWM(9, 0, getAngleToPulse(90 + 20 - pulselen)); pwm.setPWM(8, 0, getAngleToPulse(pulselen)); } delay(animDelay); //EYES analogWrite(ledPin, 255); globalPos = 1; delay(100); Serial.println("Sleep"); pwm.sleep(); } delay(500); } delay(10); }
Nun... Ja!
wire
ist als Standard in der IDE immer mit installiert, die Adafruit
-Bibliotheken nicht.
Und danach drückst Du in der IDE nochmal STRG-T
und siehst nach, ob alle Klammebenen richtig auf- und zugehen. Kann ich jetzt so auf die Schnelle bei Deinem Sketch-Post nicht erkennen.
Nachtrag:
Den Abschnitt Install Adafruit PCA9685 library in der Beschreibung des Treiberboards kennst Du?
ne sorry leider nicht bin absolut neuling auf dem gebiet kenne hier und da ein bischen was
Neuling zu sein ist kein Makel und wird sich mit der Zeit ändern
Lies Dir mal die Beschreibung in Ruhe durch, arbeite sie ab und dann wirst Du am Ende mit einer Meldung "Der Sketch braucht Speicher..." ein Programm zum Hochladen erstellt haben.
Dazu reicht vorerst der "Prüfen"-Knopf:
so hab das jetzt probiert beim prüfen knopf hat es funktioniert aber beim hochladen leider nicht da kam ne fehlermeldung
Arduino: 1.8.19 (Windows 10), Board: "Arduino Nano, ATmega328P"
Der Sketch verwendet 7486 Bytes (24%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 555 Bytes (27%) des dynamischen Speichers, 1493 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00
Beim Hochladen des Sketches ist ein Fehler aufgetreten
Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
Richtiges Board und richtigen Port ausgewählt?
Beim Nano gibt es möglicherweise noch das Problem mit dem alten Bootloader (wenn es ein sehr alter ist oder eine Klon von sehr weit östlich von uns). Im Zweifel mal "old Bootloader" probieren.
und wen Com Port nicht vorhanden CH340G Treiber installieren
Ja erledigt das drauf spielen funktioniert kommt kein Fehler nur aber beim ausprobieren tut sich nix
Die Led an Pin 6 geht auch nicht an
Gibts denn Ausgaben auf dem Seriellen Monitor?