- SF800 Solar Speicher Tutorial         
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
    shedepe
    Gast
    Das mit der Temperatur könntest du auch aus dem Datenblatt sehen Die Controller sind in der Regel nicht empfindlich, die Displays wiederum schon. Das sind ja in der Regel welche die auf Flüssigkristallbasis arbeiten und die mögen weder zu viel Kälte noch zu viel Hitze.

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.04.2008
    Beiträge
    282
    Wie meine Vorredner (-schreiber) schon sagten: die Arduino-Bibliotheken sind speziell auf einige Prozessoren angepasst. Solange man also zum Beispiel einen ATMega328 nutzt, ist alles gut. Sobald man einen etwas exotischeren Controller nutzt, funktionieren viele der Standard-Bibliotheken nicht mehr. Digistump (http://digistump.com/) hat ein Arduino-Board auf Basis eines ATtiny. Dafür gibt es auch eine Erweiterung der Arduino-IDE mit ein paar passenden Bibliotheken.

    Für meine eigenen Projekte bin ich allerdings von der Arduino Software wieder abgerückt, da sie doch recht unflexibel ist und jede Menge Overhead mitbringt. Es ist zwar etwas mehr Arbeit, einen Controller in nativem C zu programmieren, allerdings lohnt sich der Aufwand in meinen Augen. Ich nutze deshalb eigentlich nur noch das ATMEL Studio. Habe dort auch schon einige Projekte mit Servos umgesetzt, ohne auf fertige Bibliotheken zurück zu greifen. Übrigens auf Basis eines ATtiny45, der dafür dicke reicht, wenn man auf den ganzen Arduino Schnick-Schnack verzichtet. Eines der Projekte ist ein Servo-Positionier-Modul, bei dem man die beiden Servo-Positionen per Poti einstellen kann und dann einfach per Taster oder per Optokoppler-Eingang hin und herschalten kann. Vielleicht kannst Du Dir Dein Leben etwas erleichtern, wenn Du aus sowas zurück greifst.

    Wenn man die Grundlagen und die Theorie der Servo-Ansteuerung mal verstanden hat (und zudem vielleicht noch ein Oszi hat), ist das eigentlich alles kein Problem und geht insgesamt vielleicht sogar schneller als der Versuch, Arduino auf Deine Bedürfnisse anzupassen.
    Geändert von redround (19.10.2016 um 11:48 Uhr)

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.02.2012
    Ort
    50KM über Hamburg
    Beiträge
    128
    Kalt oder heiß, wer weiß?
    Das baue ich nicht wieder.
    Vielleicht noch als Raumthermostat im Haus.

    Ich glaube ich vertüddel mich gerade total.
    Je mehr man liest, je mehr Info. Leider breit gefächert.

    An Schnick-Schnack habe ich auch kein Interesse.

    Genau das Suche ich gerade:
    Eines der Projekte ist ein Servo-Positionier-Modul, bei dem man die beiden Servo-Positionen per Poti einstellen kann und dann einfach per Taster oder per Optokoppler-Eingang hin und herschalten kann.
    Meinst du bei Digistump die kleinen Wifi Boards?
    Ich habe noch mehrere von den ATtinys und ProMinis.
    Damit muß ich erstmal etwas machen. Es reicht schon, dass ich unter anderem jede Menge Logik Ic wenig Sinnvoll rumliegen habe.
    Ich versuche mal einen Servo-Positionier-Modul-Sketch hinzukriegen.

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.04.2008
    Beiträge
    282
    Ich dachte eher an was fertiges: http://shop.cboden.de/Schaltgeraete/...rchparam=servo

    Du kannst das aber natürlich auch selbst bauen. Wenn Du willst, kann ich aber auch eine komplette Steuerung für Dich bauen. Vielleicht kannst Du Dich ja mal mit etwas Mechanik revanchieren

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.02.2012
    Ort
    50KM über Hamburg
    Beiträge
    128
    Das sieht ja sehr gut aus.
    Aber leider auch sehr groß. Dann ist ja der ProMini wieder im Spiel. Auch weil ich gerne mit 3,7 Volt bastle.

    Code:
    #include <SoftwareServo.h>
    
    
    
    
    SoftwareServo myservo;  // create servo object to control a servo 
    
    int potpin = A1;  // analog pin used to connect the potentiometer
    int val;    // variable to read the value from the analog pin 
    const int relaisPin = PB1; // Arbeitender DigitalPin6
    
    void setup() 
    { 
      myservo.attach(0);  // attaches the servo on pin 2 to the servo object 
    pinMode(PB1, OUTPUT);// ist der schaltende Ausgang
    
    } 
    
    void loop() 
    { 
      val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023) 
      val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180) 
      myservo.write(val);
                            // waits for the servo to get there 
    
      SoftwareServo::refresh();
    int val = analogRead(potpin); 
    if (val <= 70)
    {
      digitalWrite(relaisPin, HIGH);
    }
    else
    {
      digitalWrite(relaisPin, LOW);
    }
    if (val >= 110)
    {
    digitalWrite(relaisPin, HIGH);  
    }
    else
    {
    digitalWrite(relaisPin, LOW);  
    }
      
    }
    Sorry die //Beschreibung stimmt nicht.
    Das Funktioniert schon. Mir fehlt die Info wie man 2 Werte in die if Abfrage setzt.
    so wie ich das jetzt habe geht es nicht.
    Code:
    if (val <= 70 >=120)
    So auch nicht. Also zwischen 2 Werten HIGH sonst LOW?
    Wie schreibt man das?
    Steht irgendwie nicht im Arduino Kochbuch?
    Das das Servo nur solange reagiert, wie ein Taster gedrückt ist, regle ich einfach Analog.
    Jegliches delay mag die Library nicht.

    Leider bin ich jetzt bis Dienstag weg. Meine Frau verschleppt mich ganz hoch rauf, bis zur Mosel. Gefährliches Erdbebengebiet.
    Naja, ich muß mit.
    Meint sie?
    Dabei habe ich hier soviel zu tun!
    Beton vor der Pforte schütten, Blätter harken, Katzen füttern, einkaufen, Haus putzen, 10 Tage warten bis das Kind vom Reiterhof kommt,
    Dachrinne sauber machen, Gartenteich ausräumen und und und diesen Blödsinn hier machen.
    Sie meint das nützt nichts!
    Tschüss
    oder heißt es jetzt schon
    Tschüssle?
    Achim

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Mir fehlt die Info wie man 2 Werte in die if Abfrage setzt.
    So auch nicht. Also zwischen 2 Werten HIGH sonst LOW?
    Code:
    digitalWrite(relaisPin, (val > 70 && val < 120) ? HIGH:LOW);
    In den inneren Klammern steht eine und (&&) verküpfte Bedingung.
    Nach der Bedingung steht was zu tun ist nach folgender Syntax:
    Bedingung ? True-Fall : False-Fall

    Genauso geht:
    Code:
    boolean is_in_bounds = val > 70 && val < 120;
    digitalWrite(relaisPin,  is_in_bounds);
    
    // oder
    if(digitalWrite(val > 70 && val < 120)
      digitalWrite(relaisPin, HIGH);
    else
      digitalWrite(relaisPin, LOW);

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.02.2012
    Ort
    50KM über Hamburg
    Beiträge
    128
    Die Ferien sind längst vorbei und ich versuche es weiter.
    Danke Sisor, für deine Wissensvermittlung. Das hat mir sehr geholfen!
    Der Sketch lief zwar, aber auch wenn nichts gemacht werden sollte flossen 30-40mA.
    Kann sein, das es an der geringen Spannung und den billigen Servos liegt. Eben, das sie die Position nicht eindeutig finden und weiter versuchen.
    Jetzt habe ich nach etlichen Versuchen einen sketch gefunden, welcher selbst bei 2,6 Volt läuft.
    Hier wird das/der Servo(Wie überhaupt-der-die-das) in Schritten mit Pause geführt.
    Mein Problem ist aber, das hier eine ständige Wiederholfunktion im Vordergrund steht. Eine-for- Schleife.
    Ich habe viel Versucht, aber die Softwareservo Bibliothek nimmt nichts an. Mit anderen Worten. Es passiert nichts.
    Begeister bin ich von der ATtiny Stabilität. Weit über 100 x habe ich ihn schon aus der Fassung gezogen und in das Steckbrett gesetzt.

    Also würde ich gerne wissen, wie ich die for Schleife ersetze, sodass nur nach Aufforderung das Ziel in einzelnen Schritten erreicht wird. Wie immer hilft mir das Arduino Kochbuch nicht weiter. Da werden rotierende Servos beschriebe. Auch mit ner "for" Schleife. Statt nur den Grundcode zu geben sind in allen Beispielen immer 2 Funktionen verknüpft.
    Damit habe ich Probleme

    Achim, der Versuchende.
    Code:
    #include <SoftwareServo.h>
    
    SoftwareServo servo;
    void setup()
    {
      servo.attach(0);} //benennt den Pin des Servos
    
    void loop() 
    {
        int pos; //wechselnde Position, nach numerischen Werten???
        for(pos = 30; pos < 150; pos += 1)//Bestimmung,soll in 1ner Schritten von 150 nach 30° laufen
        {
            servo.write(pos); // //Nun soll das Servo laufen           
            delay(20);                     
            SoftwareServo::refresh();//this row....
            
        }
     {   delay(2000);
    }
    
    
    {
      delay(2000);
    }
    
        for(pos = 150; pos>=30; pos-=1) //das Gleiche rückwärts
        {                               
            servo.write(pos);             
            delay(20);                     
            SoftwareServo::refresh();//This row....
            
        }
        {
          delay(2000);
    }
    }

Ä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
  •  

LiFePO4 Speicher Test