-         

+ Antworten
Ergebnis 1 bis 6 von 6

Thema: ApplicationBoard1 für Protobed Mega 16 -32

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    52
    Beiträge
    1.305
    Blog-Einträge
    1

    ApplicationBoard1 für Protobed Mega 16 -32

    Anzeige

    [highlight=yellow:ef3e4005b7]ApplicationBoard1 für Protobed Mega 16 -32[/highlight:ef3e4005b7]

    Erweiterungsbaustein für RNB Boards
    (Am besten für mein Protobed http://www.roboternetz.de/phpBB2/zei...rag.php?t=4890)

    2 x 16 Zeichen LCD im 4-Bit Modus
    PLUS
    I²C Portexpander mit PCF 8574
    8 LEDs für Anzeige / Ausgabe
    8 Taster für Eingaben



    Übersichtlicher Aufbau.
    Die Taster und LED's können mit dem darüber liegenden
    LCD in Beziehung gebracht werden...

    Ausfühliche und detailiert beschriebene Bauanleitung (natürlich getestet)


    [highlight=yellow:ef3e4005b7]Ab sofort im Download verfügbar[/highlight:ef3e4005b7]
    http://www.roboternetz.de/phpBB2/dlo...le&file_id=201

    Meine Protobed-Serie:
    Weitere Projekte von mir
    ...sind ab sofort auf meiner Nickpage verlinkt.
    Dann muss ich nicht alle meine alten Beiträge korrigieren.
    Es lohnt sich bestimmt, sich diese auch anzusehen.
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    52
    Beiträge
    1.305
    Blog-Einträge
    1
    Hier werden (falls Notwendig) in unregelmässigen Abständen [highlight=yellow:09ca723bda]Tipps[/highlight:09ca723bda] veröffentlicht


    [highlight=yellow:09ca723bda]Demoprogramm[/highlight:09ca723bda] (ist auch in der Doku bereits enthalten)
    Appbrd-Demo1.bas
    Code:
    'ApplicationBoard 1
    'Protobed ATmega16-32
    '
    'AppBrd-1 LCD Header an Portobed ATmega 16-32 Port-C angeschlossen
    'AppBrd-1 I2C Header an Portobed ATmega 16-32 angeschlossen
    
    '=================================================================
    
    ' CPU konfigurieren
    $regfile = "m32def.dat"
    $crystal = 16000000                               ' Quarzfrequenz
    
    ' I2C konfigurieren
    Config Scl = Portc.0                              ' Ports fuer IIC-Bus
    Config Sda = Portc.1
    
    ' Konstanten definieren
    Const Appbrd_adr = &H42                           ' Adresse des PCF8574 A0 auf ON
    Const Appbrd_adr2 = &H43                          ' Adresse des PCF8574 A0 auf ON
    
    Const Text1 = "Applicat.Board 1"
    
    
    ' LCD konfigurieren
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
    
    ' Variablen deklarieren
    Dim M As Byte
    Dim N As Byte
    Dim X As Byte
    
    I2cinit                                           ' I2C - BUS initialisoeren
    Initlcd                                           ' LCD initialisieren
    Display Off                                       ' LCD Anzeige ausschalten
    Cls                                               ' LCD löschen
    Cursor Off Noblink                                ' Schalte den Cursor aus
    
    Display On                                        ' LCD Anzeige einschalten
    
    I2csend Appbrd_adr , 0                            ' den PCF8574 auf 0 stellen (alle LED aus)
    
    ' Variablen initialisieren
    M = 0
    N = 0
    X = 0
    
    Locate 1 , 1                                      ' Cursor auf 1. Zeile, 1. Spalte setzten
    Lcd Text1                                         ' Ausgabe von Text1 auf LCD
    
    Locate 2 , 1                                      ' Cursor auf 2. Zeile, 1. Spalte setzten
    Lcd "Demonstration"                               ' Ausgabe von "Demonstration" auf LCD
    
    Wait 3                                            ' kurze Pause
    
    Einsprung:
    M = 0
    N = 0
    X = 0
    
    
    Cls                                               ' Anzeige löschen
    Wait 1
    Locate 1 , 1                                      ' Cursor auf 1. Zeile, 1. Spalte setzten
    Lcd "Achte auf ......"
    Locate 2 , 1                                      ' Cursor auf 1. Zeile, 1. Spalte setzten
    Lcd "       die LED's"
    Wait 1
    
    Do
    
       For N = 0 To 7
          M = 2 ^ N
          I2csend Appbrd_adr , M                         ' den PCF8574 Daten senden
          Waitms 100                                  ' kurze Zeit zum gucken ;-)
       Next N
       X = X + 1                                      ' Zähler erhöhen
    Loop Until X >= 10                                ' solange wieder holen bis die Bedingung erfüllt ist
    
    I2csend Appbrd_adr , 0                            ' den PCF8574 auf 0 stellen (alle Ports aus)
    
    Cls                                               ' Anzeige löschen
    Wait 1
    Locate 1 , 1                                      ' Cursor auf 1. Zeile, 1. Spalte setzten
    Lcd "Noch einmal ?   "
    Locate 2 , 1                                      ' Cursor auf 1. Zeile, 1. Spalte setzten
    Lcd "JA          NEIN"
    
    I2csend Appbrd_adr , &B10000001                   ' den PCF8574 stellen 1. und letzter Port
    
    Do
      I2creceive Appbrd_adr2 , N                      ' Beachte es können nur Ports abgefragt werden
      If N = 128 Then                                 ' welche einen HI Pegel haben
       Exit Do                                        ' Der PCF meldet aber die Summe der aktiven Bits
      End If                                          ' Werte der Bits beachten
    
      Locate 2 , 6
      Lcd "["
      Lcd N
      Lcd "]  "
    
      Loop Until N = 1
    I2csend Appbrd_adr , 0                            ' den PCF8574 stellen alle Ports aus
    
    If N = 128 Then Goto Einsprung
    
    Cls
    
    Locate 1 , 1                                      ' Cursor auf 1. Zeile, 1. Spalte setzten
    Lcd "Jetzt Tasten    "
    Locate 2 , 1                                      ' Cursor auf 1. Zeile, 1. Spalte setzten
    Lcd "druecken ["
    
    M = &B11111111                                    ' Binäre Darstellung alle Ports auf HI
    '                                                 ' Hexadezimal ginge es so M = &HFF
    '                                                 ' und selbtverfreilich auch in dezimal M = 255
    
    I2csend Appbrd_adr , M                            ' den PCF8574 Daten senden (alle Ports an)
    
    
    Do
     I2creceive Appbrd_adr2 , N
     Locate 2 , 11
     Lcd N
     Lcd "]  "
     Waitms 10
    Loop
    
    
    End                                               'end program
    [highlight=yellow:09ca723bda]Demoprogramm[/highlight:09ca723bda] (ist auch in der Doku bereits enthalten)
    Appbrd-Demo2.bas
    Code:
    'ApplicationBoard 1
    'Protobed ATmega16-32
    '
    'AppBrd-1 LCD Header an Portobed ATmega 16-32 Port-C angeschlossen
    'AppBrd-1 I2C Header an Portobed ATmega 16-32 angeschlossen
    
    '=================================================================
    
    ' CPU konfigurieren
    $regfile = "m32def.dat"
    $crystal = 16000000                               ' Quarzfrequenz
    
    ' I2C konfigurieren
    Config Scl = Portc.0                              ' Ports fuer IIC-Bus
    Config Sda = Portc.1
    
    ' LCD konfigurieren
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
    
    ' Prozeduren deklarieren
    Declare Sub Prog1
    Declare Sub Prog2
    Declare Sub Prog3
    Declare Sub Prog4
    Declare Sub Prog0
    Declare Sub Flash(byval Z As Byte)
    
    ' Konstanten definieren
    Const Appbrd_w_adr = &H42                         ' Adresse des PCF8574 zum schreiben (ADR - A0 auf ON)
    Const Appbrd_r_adr = &H43                         ' Adresse des PCF8574 zum lesen     (ADR - A0 auf ON)
    
    ' I2C initialisieren
    I2cinit                                           ' I2C - BUS initialisoeren
    ' Slave initialisieren
    I2csend Appbrd_w_adr , &B00000000                 ' den PCF8574 auf 00000000
    
    ' LCD initialisieren
    Initlcd                                           ' LCD initialisieren
    Display Off                                       ' LCD Anzeige ausschalten
    Cls                                               ' LCD löschen
    Cursor Off Noblink                                ' Schalte den Cursor aus
    
    Display On                                        ' LCD Anzeige einschalten
    
    
    ' Variablen deklarieren
    Dim M As Byte
    Dim N As Byte
    Dim X As Byte
    
    
    ' Hauptprogramm
    Do
       Locate 1 , 1
       Lcd "Programm waehlen"
       Locate 2 , 1
       Lcd "1 2 3 4     ENDE"
       I2csend Appbrd_w_adr , &B10001111              ' Eingabemaskierung
       '                                                 (Anzeige am Board Seitenverkehrt)
    
       Do
          I2creceive Appbrd_r_adr , N                 ' solange wiederholen bis
       Loop Until N <> &B10001111                     ' ein selektierter Port geändert wird
    
       I2csend Appbrd_w_adr , &B00000000              ' den PCF8574 auf 00000000
    
      Select Case N
        Case &B10001110 : Prog1
        Case &B10001101 : Prog2
        Case &B10001011 : Prog3
        Case &B10000111 : Prog4
        Case &B00001111 : Prog0
        Case Else : Call Flash(20)
      End Select
    
    Loop
    
    
       Cls
       Locate 1 , 1
       Lcd N
       Locate 2 , 1
       Lcd "Ende"
       End                                            'end program
    
      ' +++ +++ +++ +++ +++
      ' +++ +++ +++ +++ +++
    
        Sub Prog1
          Cls
          Locate 1 , 1
          Lcd "Programm 1"
          Locate 2 , 1
          Lcd "wurde gewaehlt"
          Waitms 500
          Call Flash(3)
          Wait 1
       End Sub
    
      ' +++ +++ +++ +++ +++
    
       Sub Prog2
          Cls
          Locate 1 , 1
          Lcd "Programm 2"
          Locate 2 , 1
          Lcd "wurde gewaehlt"
          Waitms 500
          Call Flash(3)
          Wait 1
       End Sub
    
      ' +++ +++ +++ +++ +++
    
       Sub Prog3
          Cls
          Locate 1 , 1
          Lcd "Programm 3"
          Locate 2 , 1
          Lcd "wurde gewaehlt"
          Waitms 500
          Call Flash(3)
          Wait 1
       End Sub
    
      ' +++ +++ +++ +++ +++
    
       Sub Prog4
          Cls
          Locate 1 , 1
          Lcd "Programm 4"
          Locate 2 , 1
          Lcd "wurde gewaehlt"
          Waitms 500
          Call Flash(3)
          Wait 1
    
       End Sub
    
      ' +++ +++ +++ +++ +++
    
       Sub Prog0
          Cls
          Locate 1 , 1
          Lcd "Programm ENDE"
          Locate 2 , 1
          Lcd "wurde gewaehlt"
          Wait 2
          Call Flash(10)
          Cls
      End
      End Sub
    
      ' +++ +++ +++ +++ +++
    
      Sub Flash(byval Z As Byte)                      ' Ein Lichterspiel von definierbarer Anzahl
          For X = 1 To Z
             I2csend Appbrd_w_adr , &HFF              ' 11111111
             Waitms 50
             I2csend Appbrd_w_adr , &H00              ' 00000000
             Waitms 150
          Next X
    
      End Sub
    
    End
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  3. #3
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.955
    Blog-Einträge
    1
    Hallo

    Da es noch nicht freigeschaltet war hab ich es nochmal gelöscht. Du kannst es jetzt korrigiert uploaden.

    Bitte vor dem posten unbedingt nochmal alles kontrollieren und testen. So gut es geht sollten doch Fehler vermieden werden, auch wenns nicht immer klappt.
    Bei komplexeren Anleitungen ist es oft auch sinnvoll diese auf einer eigenen Homepage (falls du eine hast) abzulegen und hier im Download Bereich nur zu verlinken. Dadurch kannst du die einfach schneller aktuallisieren und ergänzen.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.01.2005
    Ort
    HH
    Alter
    31
    Beiträge
    215
    Hallo Darwin!

    Ich habe dein Application-Board erflogreich nachgebaut.
    Ich habe mir, um Geld zu sparen ( ), ein normales LCD gekauft. Ich dachte Adapter bauen ist ja kein Problem. Denkste!
    Ich habe mir das LCD mit der Bestellnummer "LCD 162C LED" bei Reichelt für 7,50€ gekauft.
    Aber dein Adapter-Board hat irgendwie nicht zu diesem Display gepasst. Auch kein Problem, habe ich mir schnell selber eins entworfen! Habe da dann noch gleich die Beleuchtung angeklemmt.
    Leider muss man dieses Display so hoch stapeln, da es breiter ist.
    Dann ist mir aufgefallen, dass dieses Display einen schlechten Kontrast hat wenn man den Pin dazu auf Masse legt, also hab ich noch ein Poti mit auf die Platte gepackt.
    Das Display funktioniert soweit. Mit dem PCF8574 bin ich noch am kämpfen, irgendwie wollen 2 LEDs nicht. Mal sehen....

    Woher hast du dein LCD? Würde vielleicht umrüsten...

    Wenn man diese Schaltung nachbaut sollte man unbedingt ein Dil-LCD nehmen, wenn man die kompakte bauweise nicht missen möchte!

    MfG
    Martin

    Edit: DIe Leds gehen jetzt! Typischer Fall von Verpolung! Aber erstmal ne halbe stunde fehler suchen....
    Taster gehen auch! also geht alles!!!
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken rimg0004_183.jpg   rimg0002_205.jpg  
    Angehängte Dateien Angehängte Dateien
    Motio - Roboterarm - nähre Infos auf http://www.martin-jacobsen.de

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    52
    Beiträge
    1.305
    Blog-Einträge
    1
    Boh Ehy,
    schön..sehr schön.

    Ich hab das original LCD auch vom Reichelt... "LCD 162 DIP" €15,95

    Ich hoffe Du stellst Dich anfangs nicht auch so blöd an wie ich....
    Das LSB vom PCF ist links das verwirrt leider etwas beim proggen...

    Naja wenn Du Probleme hast, ich bin ja da.....


    PS Was hast du da links und rechts von Deinem Display als Abstandshalter verweindet? Müsliriegel???
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.01.2005
    Ort
    HH
    Alter
    31
    Beiträge
    215
    Was hast du da links und rechts von Deinem Display als Abstandshalter verweindet? Müsliriegel???
    Das ist Balsaholz!!! Den Müsliriegel habe ich gegessen.
    Ich wollte das Board auch eigentlich mit Schrauben befestigen, hab aber nicht so kleine da. Geht auch so.....

    Programmiert habe ich noch nicht so viel, aber ich denke mal ich komme klar. Wenn nicht schrei ich.


    MfG
    Martin
    Motio - Roboterarm - nähre Infos auf http://www.martin-jacobsen.de

+ Antworten

Berechtigungen

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