Arduino nano Sketch

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 :slight_smile:
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:
image

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?
image

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.
image

1 Like

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?