- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 36

Thema: Fehler im Sketch für ATtiny?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.02.2012
    Ort
    50KM über Hamburg
    Beiträge
    128

    Fehler im Sketch für ATtiny?

    Hallo,
    ich möchte einen simplen Roboter bauen. Ähnlich einem Knicklenker. Ein Motor treibt eine durchgehende Achse an. Ein Servo reagiert auf 2 Taster(Fühler) indem es einfach bis zu einem Punkt nach links oder rechts dreht. Nach 1,5 Sekunden wieder auf Mitte. Wenn ein Fühler tastet, soll er noch rückwärts fahren. Statt H-Brücke ein Relais.
    Schaltplan:
    Bild hier  

    Für den Arduino habe ich diesen Sketch, welcher auch super funktioniert:

    Code:
    #include <Servo.h>
    
    Servo myservo;  // create servo object to control a servo
    
    int potpin = 0;  // Widerstand an A0 messen
    int val;    // Die variable vom analog pin
    const int relaisPin = 13; // Arbeitender DigitalPin
    void setup()
    {
      myservo.attach(9);  // Servo auf DigitalPin 9
      pinMode(13, OUTPUT);// ist der schaltende Ausgang
    }
    
    void loop()
    {
      int val = analogRead(potpin);            // Variable von den Widerständen messen
      val = map(val, 0, 1023, 30, 150);    //Eingrenzung des Servowinkels
    
      
    
      if (val <= 50)
      {
        myservo.write(30);             // sets position to the scaled value
        digitalWrite(relaisPin, HIGH);
        delay(1500);
      }
      else
    
      {
        myservo.write(90);
        digitalWrite(relaisPin, LOW);
      }
    
        if (val >= 130)
        {
          myservo.write(150);           // sets position to the scaled value
    
          digitalWrite(relaisPin, HIGH);
          delay(1500);
        }
        else
    
        {
          myservo.write(90);
          digitalWrite(relaisPin, LOW);
        }
      }


    Wenn ich nun diesen Sketch auf den ATtiny spielen will, läuft nichts. Statt "servo h" habe ich servo8bit h.
    Zusätzlich habe ich noch AVR insight installiert.

    Code:
    #include <Servo8Bit.h>
    Servo8Bit myServo; //Servo program mit ATtiny45.
    //Für ATtiny 85 VCC an8 -GND an 4
    //Widerstandsbrücke an Pin 7
    //Motorrelais an Pin 6
    // Servo an Pin 5
    int potPin = A1;  // Widerstand an Pin 7 messen 
    int val;    // Die variable vom analog pin
    const int relaisPin = 1; // Arbeitender DigitalPin6
    void setup()
    {
      myServo.attach(0);  // Servo auf DigitalPin Pin 5
      pinMode(relaisPin, OUTPUT);// ist der schaltende Ausgang
    }
    
    void loop()
    {
      int val = analogRead(potPin);            // Variable von den Widerständen messen
      val = map(val, 0, 1023, 30, 150);    //Eingrenzung des Servowinkels
    
      
    
      if (val <= 50)
      {
        myServo.write(30);             // sets position to the scaled value
        digitalWrite(relaisPin, HIGH);
        delay(1500);
      }
      else
    
      {
        myServo.write(90);
        digitalWrite(relaisPin, LOW);
      }
    
        if (val >= 130)
        {
          myServo.write(150);           // sets position to the scaled value
    
          digitalWrite(relaisPin, HIGH);
          delay(1500);
        }
        else
    
        {
          myServo.write(90);
          digitalWrite(relaisPin, LOW);
        }
      }
    Ich weiß wirklich nicht wo der Fehler liegt.

    Danke für eure Hilfe

  2. #2
    shedepe
    Gast
    Hast du schon einfache Sachen wie LED blinken lassen, nur PWM testen usw. auf dem ATtiny mittels eines Arduino Sketchs ausprobiert. Dann kannst du unterscheiden ob es ein Problem deines Programms oder deiner Konfiguration (Also ob dein Arduino Sketch überhaupt darauf anläuft) ist.
    Du könntest ansonsten hingehen und einfach direkt auf Basis der AVR - libc den Code schreiben. Ist auch nicht arg viel komplizierter und man lernt noch dabei etwas über den Mikrocontroller.

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    34
    Beiträge
    1.192
    Hallo,
    im Schaltplan vermisse ich noch die üblichen Abblockkondensatoren. Der ATtiny sollte 100nF an seinen Anschlüssen bekommen.
    Für Motor und Servo wäre es noch gut wenn man einen Elko an die Versorgung schaltet ( Kapazität: z.B. 100µF oder mehr ).
    Sonst bricht die Versorgungsspannung bei Last ein und der ATtiny schaltet ab oder startet neu...
    Den ATtiny kann man auch über Diode+Elko aus dem Akku versorgen, damit er auch bei kurzen Spannungseinbrüchen nicht ausschaltet.
    Grüße, Bernhard
    "Im Leben geht es nicht darum, gute Karten zu haben, sondern auch mit einem schlechten Blatt gut zu spielen." R.L. Stevenson

  4. #4
    shedepe
    Gast
    Zum Thema Schaltplan. Ein unbeschalteter Reset Pin ist auch nicht gut. Der muss mit 10 kOhm auf VCC gelegt werden.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.02.2012
    Ort
    50KM über Hamburg
    Beiträge
    128
    Hallo shepede,
    Led Blinken ging. Fader nicht. Also kein PWM. Danke für den Tipp.
    Ich habe schon Verständnisprobleme mit dem Arduino Kochbuch(leider).
    Aber ich lese mir das durch.
    Danke für den Hinweis mit den 10K auf VCC. Habe ich natürlich nicht.
    Hallo Bernhard,
    danke, das ist ein guter Tipp. Eigentlich logisch.

    Dankeschön

    Achim

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.04.2008
    Beiträge
    282
    Der Code ist auch etwas optimierungsbedürftig. Nehmen wir mal an, VAL hat einen Wert von 200. Dann spring er im ersten IF in den Else-Zweig und gibt eine Soll-Position von 90 vor .... nur um dann im zweiten IF in den True Zweig zu springen und dann wird 150 als Sollposition ausgegeben. Das kann man zwar so machen, hat aber nichts mit sauberer und aufgeräumter Programmierung zu tun. Besser wäre her eine Switch Funktion.

    Auch auf Delay sollte man eigentlich verzichten, wo immer möglich.
    Geändert von redround (16.10.2016 um 19:30 Uhr)

Ähnliche Themen

  1. Digispark - Sketch hochladen
    Von Cysign im Forum Arduino -Plattform
    Antworten: 2
    Letzter Beitrag: 23.02.2016, 13:36
  2. Sketch Problem
    Von wendtdir im Forum Arduino -Plattform
    Antworten: 1
    Letzter Beitrag: 16.07.2015, 18:25
  3. Arduino Sketch serielles Terminal: erkennen von CR
    Von Ford Prefect im Forum Arduino -Plattform
    Antworten: 3
    Letzter Beitrag: 18.06.2014, 14:58
  4. frage zu sketch arduino und webserver
    Von der_tom im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 11.03.2012, 18:07
  5. Timer1 Fehler bei Attiny 25
    Von hütti im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 28.05.2007, 16:25

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress