- 12V Akku mit 280 Ah bauen         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 27 von 27

Thema: Noob will in Microcontrollerprogrammierung + Roboterbau einsteigen - Anfängerfragen

  1. #21
    Neuer Benutzer Öfters hier
    Registriert seit
    15.04.2014
    Beiträge
    27
    Anzeige

    E-Bike
    Hey, du hattest Recht! - ich hatte wohl gestern einfach iwelche Programmfehler eingebaut und kam dann (fälschlicherweise) zu dem Schluss, dass es an der Demoversion und der 4KB Begrenzung lag. Unter "Eigenschaften" der erzeugten .bas-Dateien steht "Größe: ..." und "Größe auf Datenträger: ...", bei Größe auf Datenträger waren es nämlich immer deutlich mehr KB und auch mal zufällig ziemlich genau 4 KB. Für LunaAVR brauche ich scheinbar doch einen richtigen Programmer laut meiner Recherchen.
    Aber da ich nun mit der Bascom-Demo doch deutlich mehr machen kann genügt mir das auch vorerst völlig.

    Mit dem Piezo-Speaker ist es so: "PortX.Y = 1" sorgt für ein kurzes "tick", wenn man einen Ton erzeugen will ist die Synthax: " Sound PortX.Y, [Dauer], [Frequenz]"
    Solange ich Anfänger bin und jeden Tag einiges neues dazulerne muss ich das wohl noch genießen.^^

    habe heute eine Fußgängerampel programmiert, die standardmäßig rot ist und nur nach kurzem Tasterdruck nach einigen Sekunden grün wird. Dabei wird bei Grün ein "tick, tick, tick, tick...."-Signalton ausgegeben bis die Ampel wieder auf Gelb und dann auf Rot schaltet. Beim Umschalten auf rot ertönt noch ein etwas tieferer Signalton dreimal kurz hintereinander (quasi analog eines "S" als Morsezeichen).
    Eine Ampel, die automatisch von Rot über Gelb nach Grün schaltet und zurück hab ich bereits in einem Tutorial als Quelltext gehabt, nun hab ich diese mit eigenen Ideen selbstständig weiterentwickelt und nun kommt sie der Funktion einer realen Fußgängerampel doch recht nahe.
    Macht echt Spaß, wenn die ersten Projekte fertig sind und funktionieren, die man selbstständig entwickelt hat.
    Mal sehen was mir morgen in den Sinn kommt. xD Denke ich werde mal die Photozelle nutzen und auch mal die Potentiometer.

  2. #22
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Mit dem Piezo-Speaker ist es so: "PortX.Y = 1" sorgt für ein kurzes "tick", wenn man einen Ton erzeugen will ist die Synthax: " Sound PortX.Y, [Dauer], [Frequenz]"
    Dann ist es so wie ich oben vermutet habe, Du musst dem Schallwandler selbst eine veränderliche Spannung (zB ein Rechteck durch einfaches ein- und ausschalten des Ports) zur Verfügung stellen, damit er einen kontinuierlichen Ton von sich gibt. Der high-level-Befehl "Sound" in Bascom macht genau das für Dich. Viel Spass weiterhin!

    Gruß
    Malte

  3. #23
    Neuer Benutzer Öfters hier
    Registriert seit
    15.04.2014
    Beiträge
    27
    Hey, heute hab ich mich mal an dem LCD versucht.
    Im Löten mache ich auch Fortschritte - sieht alles viel feiner und sauberer aus als bei den ersten Widerständen auf der Platine und ging dazu auch noch flotter.

    Testprogramm vom Hersteller wurde auch erfolgreich auf dem LCD angezeigt (einfache Textausgabe, Programm ist als .hex vorhanden).

    Jedoch bekomme ich es einfach nicht hin, eigenständig einen Text mit Bascom zu programmieren. Könnt ihr mir helfen?
    Hier die Pinbelegung des LCD:
    Klicke auf die Grafik für eine größere Ansicht

Name:	Pinbelegung LCD.jpg
Hits:	1
Größe:	49,8 KB
ID:	28060

    Hier mein Versuch eines Programms (das sogar im Datenblatt zu diesem LCD als Beispiel aufgeführt war)
    $regfile = "m8def.dat"
    $crystal = 3686400
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
    Config Lcd = 16 * 2
    Config Portd = Output

    Do
    Waitms 1000
    Cls
    Lcd "myAVR mit LCD"
    Loop
    END
    Ich verzweifle grad ein wenig und hab keine Idee, was ich falsch gemacht hab o.O. Kompilieren klappt, auf µC brennen geht auch. Aber dann tut sich nix.
    Trotz des Befehls "Cls" (Display löschen) in der Schleife bleibt der Text des vorherigen Testprogramms auf dem LCD.

    In der Beschreibung steht noch folgendes:
    Das myAVR LCD Add-On ist für den 4Bit Modus über Port D konfiguriert.
    The myAVR LCD Add-On is configured for the 4 Bit mode across port D.

    Warte mindestens 50 ms nach Power-ON.
    Wait as many as 50 ms according to Power-ON

    Das Display wird durch das dreimalige senden von 0b0011xxxx (Soft-
    Reset) in den Initialisierungsmodus versetzt, dabei muss RS = 0 sein.
    Muss ich da irgendetwas manuell einstellen/konfigurieren? Wenn ja, wo kann ich das tun?

  4. #24
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.11.2013
    Ort
    Home
    Beiträge
    213
    Hallo,

    wollte mich schon melden. Hat sich wohl erledigt.
    Zitat:
    „Aber da ich nun mit der Bascom-Demo doch deutlich mehr machen kann genügt mir das auch vorerst völlig.“
    Ich:
    Mit 4K Flash(Demo BASCOM) habe ich auch schon mal eine Funkbrücke aufgebaut.
    2 Temperaturwerte / 4 universal Analog und 3 Digitalwerte wurden ausgewertet(gesendet).
    Flash-Rom Speicher mit ca. 3,2 kByte belegt. Aber für sehr große Anwendungen wie mit Grafikdisplay mit Touch- Bedienfeld usw. habe ich mich doch die Vollversion gegönnt. Bin begeistert von den vielen Update. Machen mich einfach das Programmieren leichter.

    Mit freundlichen Grüßen
    fredred

  5. #25
    Neuer Benutzer Öfters hier
    Registriert seit
    15.04.2014
    Beiträge
    27
    Das LCD kann ich nun erfolgreich programmieren. Hab ein paar kleine Fehler gefunden (im Quelltext nach "cls" noch "wait..." eingefügt, dann mit dem myAVRprogtool nicht die .bas-datei sondern die .hex-Datei geöffnet und auf den µC gebrannt; und ich vermute, dass Bascom ein Problem damit hatte, ein völlig neues, anderes Programm für den µC unter gleichem Namen wie eine vorherige Datei zu überschreiben beim Abspeichern).

    Nun mein nächstes Problem: Wie benutze ich das Poti (Potentiometer) richtig?
    Ich habe zwei einfach Testbeispiele erfolglos ausprobiert:
    - LEDs Rot, Gelb, Grün laufen durch, wobei die Pause (alle LEDs aus) durch das Poti geregelt werden sollen.
    - Summer gibt einen Ton über ein paar Sekunden aus, wobei das Poti die Tonhöhe (Frequenz) bestimmt
    Mein Problem: durch Betätigung des Potis ändern sich die Werte nicht. LEDs leuchten immer in gleicher Geschwindigket, Summer gibt immer den gleichen Ton aus.

    1.)Wie schließe ich das Poti an? In einem Beispielprogramm wurde ein Port als Input definiert (zb. "Config Portb.2 = Input") und dort der Abgriff des Schleifkontakts mit einem Patchkabel an diesem Port angeschlossen. Ich frage mich dabei: woher weiß der µC, dass er bei "Getadc" das Potential an diesem Port abgreifen soll? In dem Beispielprogramm wurde nichts weiter definiert für diesen Port. Außerdem habe ich mitten auf dem Board einen Anschluss namens "AREF" - kann es sein dass ich immer hier das Poti anschließen muss und das gar nicht über andere Ports geht?
    2.) Zur Synthax: Was bedeutet "Getadc(0)" und "Getadc(1)"? Wo ist der Unterschied?
    Was bedeuten die Variablen hinter "Config ADC" (Single, Prescaler, Reference)
    3.) kann es sein, dass mein Problem daran liegt, dass ich das Board per USB-Kabel betreibe (über USB to UART)? Habe gelesen, dass eine Versorgungsquelle von ca. 9V mit etwa 10 - 50 mA empfohlen wird. USB Kabel haben im Normalfall 100 mA Strom. Reicht der Widerstand des Potis evtl. nicht aus?

    Hoffe auf Antworten und Hilfe.

  6. #26
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.11.2013
    Ort
    Home
    Beiträge
    213
    Hallo Spinner,

    als erstes möchte ich dich Bitte, bring erst mal ein kleines Projekt zum Erfolg z.B.(LCD-Anzeige), dann fang das nächste an. Nicht wie ich vermute erste klappt nicht nun mache ich was anderes.
    Dies ist nach meiner Meinung der aller größte Fehler für „Einsteiger“.
    1. musst du dich mal für eine Programmiersprache entscheiten(ist aber oft von fertiger Hardware abhängig) Ich Empfehle: Bascom (ist ja sehr gut lesbar) Später kann man immer noch umsteigen, ich bin und bleibe bei BASCOM. Den Compiler kann man nicht mit dem alten BASIC-Compiler für DOS auf eine Stufe stellen. Die erzeugte Hex-Datei zum schreiben auf einem Controller ist schon sehr „schmal“ Aber Bitte beachten dies ist meine Meinung und soll auf keinen Fall eine andere Programmiersprache abwerten. Denn hier geht es um den Einstig in dieser Materie und nicht was ist besser oder schlechter.
    2. Einfach eine Hex-Datei die als Beispiel geliefert wird zu „laden“ und diese nicht lesen kann(ich kann es noch mit einigen Aufwand) ist doch nichts für „Einsteiger“. Da solle man sich schon auf die Entwickler verlassen. Wie ich es auch mache.
    3.
    So nun zu der direkten Anfrage.
    Die bas-datei ist dein Programm, um es aber in Maschinencode(Hex) zu wandeln musst du in Bascom erst mal das Butten [Comile] oder F7 drücken. Nur dann wird die Hex erzeugt. Erst danach auf [Program chip] oder F4.
    All dies, hat den Vorteil du musst nicht wie in C oder GCC erst mal eine Datei #include <avr/io.h> oder MCU usw. erstellen. All dies macht Bascom mit der „Kopfeinstellung“

    Z.B wie ich es aus deinem Versuch mit LCD erkennen kann.
    $regfile = "m8def.dat" 'ist ein ATMega8

    ‚diese Einstellungen kann ich später beschreiben wenn gewünscht.
    $hwstack = 40
    $swstack = 40
    $framesize = 40
    ‚Hier ist Vorsicht angesagt, ist immer abhängig von der Fuse Einstellung.
    ‚Ist dein µC mit ext. Quarz beschaltet muss die Frequenz hier eingestellen.
    $crystal = 8000000 'Interner Takt (8MHz)
    ‚Erst mal später einfügen wenn COM- Terminal verwendet wird
    $baud = 19200 Register für COM-Ausgabe reservierten

    ‚Möchtest du die Pins für Analogeingang einstellen kommt als nächste Zeile.

    Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Referenzspannung auf 5 Volt

    Der int. Wandler benötigt eine Spannungsversorgung also AVCC mit 5Volt verbinden.
    AREF ist ein Referenzspannungsausgang, erstmal offen lassen


    Bedeutet dein Poti ist auf eine Seite auf 5V die andere auf GND. Der Schleifer geht auf einem Analogeingang des µC. Angenommen auf Pin AD0. Die Abfrage wäre somit Getadc(0)
    Da der µC nur ein ADC DC Wandler hat und alle Eingänge abgefragt werden können, muss Multiplexer gestartet werden. Dies macht der Befehl:

    Start Adc

    'So nur noch Analog – Eingang dimensionieren
    Dim A0 As Word
    ‚nun wird in die Variable A0 das Ergebnis geschrieben.
    A0 = Getadc(0)
    ‚Nun kannst du Entscheidungen treffen z.B ist A0 = 1023 (Schleifer auf 5Volt)

    IF A0 > 1020 Then ‘“mach was”
    ‘Else ‘mach was anderes”
    End If

    PS. Hast du eine kleine Hardware aufgebaut und beschreibst diese mit verwendeten Controller (wichtig Controllertaktung) und Pinbelegung, schreibe ich dich nach Anforderung eine Bas. Sende dann diese auch in Hex-Code, damit du Erfahrungen sammeln kannst.
    Kann nur dann Helfen, indem ich Hardware nachbaue und Software testen kann.

    Mit freundlichen Grüßen
    fredred

  7. #27
    Neuer Benutzer Öfters hier
    Registriert seit
    15.04.2014
    Beiträge
    27
    @fredred: Deine Vermutung ist allerdings falsch. Ich habe NICHT etwas anderes versucht, nur weil das eine nicht funktioniert hat.
    In einer früheren Antwort hatte ich auch bereits erwähnt, dass ich mich nun für Bascom als Sprache entschieden habe (zumindest für den Einstieg). Evtl werde ich später irgendwann mal ein wenig C++ oder Luna ausprobieren - aber erstmal arbeite ich nun mit Bascom.
    Ich habe es bereits geschafft, das LCD zu programmieren und mehrere Programme damit schon geschrieben (z.B. bei Taster1 zeigt LCD etwas bestimmtes an, bei Taster2 etwas anderes)
    Ich war bei meinem Lernfortschritt auch etwas kreativ und habe ein Programm bis jetzt immer weiterentwickelt und Neuerlerntes immer mit eingebaut.
    Zuerst leuchtete eine LED, dann wurde es zur Ampel, die immer hin und herschaltet, dann wurde die Ampel per Taster geschaltet, nun ist zu der Ampelschaltung noch eine LCD-Anzeige gekommen ("Rot", "Bitte warten...", "umschalten...", "Gruen" und "Stopp" werden dabei je nach Aktion angezeigt).
    Das Potentiometer funktioniert nun auch. Ich wusste lediglich nicht, an welchen Port ich es anschließen musste - wo ich es jetzt weiß ist es mir völlig klar, da es im Datenblatt steht, dass beim Atmega8A die Ports C0 bis C0 die ADC0 bis ADC5-Abgriffe sind.

Seite 3 von 3 ErsteErste 123

Ähnliche Themen

  1. Einstieg in Microcontrollerprogrammierung
    Von 2linkehaende im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 2
    Letzter Beitrag: 13.11.2009, 14:27
  2. Absoluter Neuling will in C einsteigen
    Von Michael 123 im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 21.09.2008, 13:11
  3. Wie soll ich einsteigen?
    Von pras_18 im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 3
    Letzter Beitrag: 13.05.2008, 21:41
  4. mit RN-Control einsteigen und das zum Robot erweitern?
    Von StoredProc im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 2
    Letzter Beitrag: 12.12.2006, 15:37
  5. Microcontrollerprogrammierung mit C/C++
    Von mArc2k5 im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 31.05.2005, 07:56

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress