Erledigt Frage wie sensoren IC2 einbinden (sensor)

Thorsten_Sch

Mitglied
31. Okt. 2010
152
0
16
47
HH
Sprachen
  1. BascomAVR
Hallo Liebe Forum gemeinde und Bastler

Zu mein projekt ich habe ein geschwindikeit messer mit kontakten (Kontakt1 5Meter abstandt Kontakt2).....
ich würde gern über den IC2 einen sensor nehmen=
---------------------------
1.)Distanz Sensor
oder
2.)radar sensor
oder
3.)Ultraschall
--------------------------
und jetzt meine frage es soll wie eine geschwindikeitanzeige werden die mann in der
30Zone findet????

Hier mal der code
Code:
$regfile = "m8def.dat"
$crystal = 8000000

Config Portd = &B11110000
Portd = &B00001111
'D2, D3 für int0 , int1
Smiley Alias Portd
Const Smiley_lachen = &B01101111
Const Smiley_weinen = &B10101111
Const Smiley_aus = &B00001111

Config Portc = Output

Config Portb = Output
Siebensegmentanzeige Alias Portb

'Timer fuer Hundertstel-Sekunden-Takt
Config Timer0 = Timer , Prescale = 1024                     '1024                     '10ms
On Timer0 Hundertsteltimer
Const Timervorgabe_0 = 178                                  '178

'Timer fuer Multiplex
Config Timer1 = Timer , Prescale = 1                        '1
On Timer1 Anzeige
Const Timervorgabe_1 = 25536

Config Int0 = Falling
On Int0 Starten
Enable Int0

Config Int1 = Falling
On Int1 Stoppen
Enable Int1

Enable Timer0
Enable Timer1
Enable Interrupts



Dim Zeit As Word
Dim Zahl As Word
Dim Zahl_temp As Word
Dim Geschwindigkeit As Single
Dim Einer As Word
Dim Zehner As Word
Dim Hunderter As Word
Dim Tausender As Word
Dim Ziffer As Byte
Dim Dezimalpunkt As Byte
Dim Dunkel As Byte
Dim Stelle As Byte
Dim I As Byte

Dim Modus As Byte
Const Bereit = 1
Const Messen = 2
Const Anzeigen = 3
Const Gesperrt = 4
Modus = Bereit

Dim Hundertstel_sekunden As Long



Zeit = 888                                                  'Wahr Voher 888
Dunkel = 0
Dezimalpunkt = 1

Smiley = Smiley_lachen
Wait 3
Smiley = Smiley_weinen
Wait 3
Smiley = Smiley_aus


Do

Select Case Modus
  Case Bereit:
     Zahl = 8888
     Dunkel = 1
     Dezimalpunkt = 1

  Case Messen :
    Zahl = Zeit
    If Zeit = 1000 Then Modus = Bereit                      'Voher 1000

  Case Anzeigen :
'     Dunkel = 0
'     Zahl = Zeit                                            'nur zur testzwecken die zeit kurz anzeigen
'     Wait 1                                                 'nur zur testzwecken die zeit kurz anzeigen
     Zahl = Round(geschwindigkeit )

     If Zahl > 40 Then                                      'wenn zu schnell dann Blinken
     Smiley = Smiley_weinen
       For I = 1 To 5                                       '5
         Dunkel = 0
         Waitms 500
         Dunkel = 1
         Waitms 500
       Next
     Else
       Smiley = Smiley_lachen
       Wait 3
     End If

     Smiley = Smiley_aus
     Dunkel = 1
     Wait 2
     Modus = Bereit

   Case Gesperrt
     Dezimalpunkt = 0
     Wait 2
     Modus = Bereit
End Select
Gosub Anzeige
Loop

End

'Multiplexer: (Zahl wird zerlegt und angezeigt)
Anzeige:
Timer1 = Timervorgabe_1
Zahl_temp = Zahl
Einer = Zahl_temp Mod 10

Zahl_temp = Zahl_temp - Einer
Zahl_temp = Zahl_temp / 10
Zehner = Zahl_temp Mod 10

Zahl_temp = Zahl_temp - Zehner
Zahl_temp = Zahl_temp / 10
Hunderter = Zahl_temp Mod 10

Zahl_temp = Zahl_temp - Hunderter
Zahl_temp = Zahl_temp / 10
Tausender = Zahl_temp Mod 10

If Stelle < 4 Then
  Incr Stelle
Else
  Stelle = 1
End If
If Stelle = 1 Then Ziffer = Einer
If Stelle = 2 Then Ziffer = Zehner
If Stelle = 3 Then Ziffer = Hunderter
If Stelle = 4 Then Ziffer = Tausender

Portc = &B11111111
Select Case Ziffer
  Case 0 : Siebensegmentanzeige = &B01111110
  Case 1 : Siebensegmentanzeige = &B00001100
  Case 2 : Siebensegmentanzeige = &B10110110
  Case 3 : Siebensegmentanzeige = &B10011110
  Case 4 : Siebensegmentanzeige = &B11001100
  Case 5 : Siebensegmentanzeige = &B11011010
  Case 6 : Siebensegmentanzeige = &B11111010
  Case 7 : Siebensegmentanzeige = &B00001110
  Case 8 : Siebensegmentanzeige = &B11111110
  Case 9 : Siebensegmentanzeige = &B11011110
End Select

If Stelle = 2 And Zahl < 10 Then Siebensegmentanzeige = &B00000000
'fuehrende Null Dunkel
If Stelle = 3 And Zahl < 100 Then Siebensegmentanzeige = &B00000000
'fuehrende Null Dunkel
If Stelle = 4 And Zahl < 1000 Then Siebensegmentanzeige = &B00000000
'fuehrende Null Dunkel

If Dunkel = 1 Then Siebensegmentanzeige = &B00000000
If Dezimalpunkt = Stelle Then Siebensegmentanzeige = Siebensegmentanzeige Or &B00000001
Portc.stelle = 0
Return



Hundertsteltimer:
Timer0 = Timervorgabe_0
'Incr Hundertstel_sekunden                                   'Auskommentiertes wenn teilung gewuenscht
'If Hundertstel_sekunden = 10 Then
  Incr Zeit
'   Hundertstel_sekunden = 0
'End If
Return

Starten:
If Modus = Bereit Then
  Start Timer0
  Zeit = 0
  Modus = Messen
  Dunkel = 1                                                'für testzwecke auf 0 setzen
  Dezimalpunkt = 3
End If
Return

Stoppen:
If Modus = Messen Then                                      'nur wenn Zeitmessung schon laeuft. nicht beimRückwärtsfahren Rueckwaertsfahren
  Stop Timer0

' Geschwindigkeit = Strecke / Zeit
  Geschwindigkeit = 5 / Zeit                                'Meter / Hunderstelsekunde
  Geschwindigkeit = Geschwindigkeit * 100                   ' m/s

' M / S * 60 * 60 / 1000 - > Km / H
  Geschwindigkeit = Geschwindigkeit * 3600
  Geschwindigkeit = Geschwindigkeit / 1000                  ' Km/h

  Modus = Anzeigen
  Dezimalpunkt = 0
Else
  Modus = Gesperrt
End If
Return

ich bitte euch um mithielfe und rat und tat.......

Mit Freundtlichen Grüssen
Thorsten Sch.:D:eek::)
 
Frage zu den sensoren

Hallo Forum und bastler

kann mir jemand dazu mal rat geben oder tipps bitte?

Gruß Thorsten Sch.
 
Hallo Thorsten_Sch,

vielleicht stellst du mal deine Frage. In deinem Beitrag kündigst du zwar eine Frage an, erklärst dann aber im zweiten Satzteil lediglich was du machen willst. Was du eigentlich von uns wissen willst, müssten wir jetzt raten.
 
Frage zu den sensoren

Hallo Forum und bastler

Also wie auf der 1 seite will ich keine kontakte haben sondern ein sensor der das mist....
der soll wie da oben die 3 aufgeliestet habe eingesetzt werden, da es ja IC2 anschluss ist weis ich nicht wie oder was ich da wo
einfügen soll.......

hoffe es hilft weiter........

Gruß
Thorsten Sch.
 
Hi Thorsten,

Zu mein projekt ich habe ein geschwindikeit messer mit kontakten (Kontakt1 5Meter abstandt Kontakt2).....
ich würde gern über den IC2 einen sensor nehmen=
---------------------------
1.)Distanz Sensor
oder
2.)radar sensor
oder
3.)Ultraschall
--------------------------
und jetzt meine frage es soll wie eine geschwindikeitanzeige werden die mann in der
30Zone findet????

sorry, aber das ist wirklich etwas difus :confused:

Hast du ein I2C-IC an dem die Sensoren dran sind? Und wenn dann welches?
Oder haben die Sensoren selber I2C-Bus? Und wenn ja, was sind das dann für Sensoren? (Typ, Bezeichnung, Datenblatt)
Willst du nur einen der drei Sensortypen verwenden? Oder willst du alle drei gleichzeitig (wie auch immer) verwenden?

Aus dem Programm kann man auch keine weiteren Infos herauslesen.

Also so wird das eher Kaffeesatzleserei. :confused:

Gruß
Dino
 
Frage zu den sensoren

Hallo Forum bastler und DINO

Ich habe an die gedacht klick Link an
Nr.1 Klick
oder den Hier KLICK

srf02c.png oder den hier
srf08_250_p1.jpg

Also die würde ich nehmen.... Um rat und tipps bin ich dank bar....

Mit freundtlichen Grüßen
Thorsten Sch.
 
Hi Thorsten,

die Sensoren hat Markus mal bei seiner Zisternenanzeige (im Projekt-Bereich zu finden) verwendet. Lies dir mal den Thread durch. Da sollte einiges dazu drin stehen. Die Programmteile kannst du dann als Beispiel verwenden.

EDIT: hier mal der Link .. klick mich

Gruß
Dino
 
Lcd I2c In ein Code einbinden

Hallo Liebe Forum Gemeinde und Bastler

Wie oben in den 1 beitrag habe ich einfach mal versucht ein I2C LCD einzubinden....
Nur leider komme ich hier nicht sehr weit und hänge auf den schlauch schon alles versucht, hier der code mit I2C.lib und as da noch zugehört.
Code:
$lib "Lcd_i2c.lib"                                          'ersetzt die Standard LCD Library
$regfile = "m8def.dat"
$crystal = 8000000

'---------I2C-Config----------
Const Pcf8574_lcd = &H40                                    'I2C Adresse &H40
Config I2cdelay = 15                                        'delay von 5=20µs=50kHz,10=10µs=100kHz;5=5µs=200KHz
Config Scl = Portc.5                                        'I2C SCL Pin
Config Sda = Portc.4                                        'I2C SDA Pin
Dim _lcd_e As Byte
_lcd_e = 192
'--------I2C-Config-----------

Config Portd = &B11110000
Portd = &B00001111
'D2, D3 für int0 , int1
Smiley Alias Portd
Const Smiley_lachen = &B01101111
Const Smiley_weinen = &B10101111
Const Smiley_aus = &B00001111

Config Portc.1 = Output                                     'Wahr Voher (config portc = Output
Config Portc.2 = Output
Config Portc.3 = Output

Config Portb = Output
Siebensegmentanzeige Alias Portb

'Timer fuer Hundertstel-Sekunden-Takt
Config Timer0 = Timer , Prescale = 1024                     '10ms
On Timer0 Hundertsteltimer
Const Timervorgabe_0 = 178

'Timer fuer Multiplex
Config Timer1 = Timer , Prescale = 1
On Timer1 Anzeige
Const Timervorgabe_1 = 25536

Config Int0 = Falling
On Int0 Starten
Enable Int0

Config Int1 = Falling
On Int1 Stoppen
Enable Int1

Enable Timer0
Enable Timer1
Enable Interrupts



Dim Zeit As Word
Dim Zahl As Word
Dim Zahl_temp As Word
Dim Geschwindigkeit As Single
Dim Einer As Word
Dim Zehner As Word
Dim Hunderter As Word
Dim Tausender As Word
Dim Ziffer As Byte
Dim Dezimalpunkt As Byte
Dim Dunkel As Byte
Dim Stelle As Byte
Dim I As Byte
'Dim Lcd_infomation As String * 3

Dim Modus As Byte
Const Bereit = 1
Const Messen = 2
Const Anzeigen = 3
Const Gesperrt = 4
Modus = Bereit

Dim Hundertstel_sekunden As Long

'---------------------I2C-zum-TEST---------------------
Cls
Locate 1 , 1
Lcd "hallo"
Locate 2 , 1
Lcd "willkommen"
Wait 2
'---------------------I2C-zum-TEST---------------------

Zeit = 888                                                  'Wahr Voher 888
Dunkel = 0
Dezimalpunkt = 1

Smiley = Smiley_lachen
Wait 3
Smiley = Smiley_weinen
Wait 3
Smiley = Smiley_aus


Do

Select Case Modus
  Case Bereit:
     Zahl = 8888
     Dunkel = 1
     Dezimalpunkt = 1

  Case Messen :
    Zahl = Zeit
    If Zeit = 1000 Then Modus = Bereit                      'Voher 1000

  Case Anzeigen :
'     Dunkel = 0
'     Zahl = Zeit                                            'nur zur testzwecken die zeit kurz anzeigen
'     Wait 1                                                 'nur zur testzwecken die zeit kurz anzeigen
      Zahl = Round(geschwindigkeit )
'      Lcd_infomation = "KMH"

     If Zahl > 40 Then                                      'wenn zu schnell dann Blinken
     Smiley = Smiley_weinen
       For I = 1 To 5                                       '5
         Dunkel = 0
         Waitms 500
         Dunkel = 1
         Waitms 500
       Next
     Else
       Smiley = Smiley_lachen
       Wait 3
     End If

     Smiley = Smiley_aus
     Dunkel = 1
     Wait 2
     Modus = Bereit

   Case Gesperrt
     Dezimalpunkt = 0
     Wait 2
     Modus = Bereit
End Select
Gosub Anzeige
loop

End

'Multiplexer: (Zahl wird zerlegt und angezeigt)
Anzeige:
Timer1 = Timervorgabe_1
Zahl_temp = Zahl
Einer = Zahl_temp Mod 10

Zahl_temp = Zahl_temp - Einer
Zahl_temp = Zahl_temp / 10
Zehner = Zahl_temp Mod 10

Zahl_temp = Zahl_temp - Zehner
Zahl_temp = Zahl_temp / 10
Hunderter = Zahl_temp Mod 10

Zahl_temp = Zahl_temp - Hunderter
Zahl_temp = Zahl_temp / 10
Tausender = Zahl_temp Mod 10

If Stelle < 4 Then
  Incr Stelle
Else
  Stelle = 1
End If
If Stelle = 1 Then Ziffer = Einer
If Stelle = 2 Then Ziffer = Zehner
If Stelle = 3 Then Ziffer = Hunderter
If Stelle = 4 Then Ziffer = Tausender

Portc = &B11111111
Select Case Ziffer
  Case 0 : Siebensegmentanzeige = &B01111110
  Case 1 : Siebensegmentanzeige = &B00001100
  Case 2 : Siebensegmentanzeige = &B10110110
  Case 3 : Siebensegmentanzeige = &B10011110
  Case 4 : Siebensegmentanzeige = &B11001100
  Case 5 : Siebensegmentanzeige = &B11011010
  Case 6 : Siebensegmentanzeige = &B11111010
  Case 7 : Siebensegmentanzeige = &B00001110
  Case 8 : Siebensegmentanzeige = &B11111110
  Case 9 : Siebensegmentanzeige = &B11011110
End Select

If Stelle = 2 And Zahl < 10 Then Siebensegmentanzeige = &B00000000
'fuehrende Null Dunkel
If Stelle = 3 And Zahl < 100 Then Siebensegmentanzeige = &B00000000
'fuehrende Null Dunkel
If Stelle = 4 And Zahl < 1000 Then Siebensegmentanzeige = &B00000000
'fuehrende Null Dunkel

If Dunkel = 1 Then Siebensegmentanzeige = &B00000000
If Dezimalpunkt = Stelle Then Siebensegmentanzeige = Siebensegmentanzeige Or &B00000001
Portc.stelle = 0
Return



Hundertsteltimer:
Timer0 = Timervorgabe_0
'Incr Hundertstel_sekunden                                   'Auskommentiertes wenn teilung gewuenscht
'If Hundertstel_sekunden = 10 Then
  Incr Zeit
'   Hundertstel_sekunden = 0
'End If
Return

Starten:
If Modus = Bereit Then
  Start Timer0
  Zeit = 0
  Modus = Messen
  Dunkel = 1                                                'für testzwecke auf 0 setzen
  Dezimalpunkt = 3
End If
Return

Stoppen:
If Modus = Messen Then                                      'nur wenn Zeitmessung schon laeuft. nicht beimRückwärtsfahren Rueckwaertsfahren
  Stop Timer0

' Geschwindigkeit = Strecke / Zeit
  Geschwindigkeit = 5 / Zeit                                'Meter / Hunderstelsekunde
  Geschwindigkeit = Geschwindigkeit * 100                   ' m/s

' M / S * 60 * 60 / 1000 - > Km / H
  Geschwindigkeit = Geschwindigkeit * 3600
  Geschwindigkeit = Geschwindigkeit / 1000                  ' Km/h

  Modus = Anzeigen
  Dezimalpunkt = 0
Else
  Modus = Gesperrt
End If
Return
ich würde bei den code gerne das die Geschwindikeit nicht nur auf den 7Segmendten zu sehen ist sondern auch auf den I2C LCD ausgeben wird, nur leider
komme ich hier nicht weiter..... Bitte um rat
-----------------------------------------------------------------------------------------------------------------------------------------------------
Den bei diesen code habe ich das hinbekommen=
Code:
$lib "Lcd_i2c.lib"                                          'ersetzt die Standard LCD Library
$regfile = "m8def.dat"
$crystal = 8000000
'---------------------------------------------------------------------------------------------------------------
Config I2cdelay = 1                                         'delay von 5=20µs=50kHz,10=10µs=100kHz;5=5µs=200KHz
Config Scl = Portd.5                                        'I2C SCL Pin
Config Sda = Portd.4                                        'I2C SDA Pin
'---------------------------------------------------------------------------------------------------------------
Adc_pin Alias Pinc.0
Pin1 Alias Portb.0
Pin2 Alias Portb.1
Ausgabe Alias Portb

Config Adc_pin = Input
Config Pin1 = Output
Config Pin2 = Output

'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
'Cls
'Cursor Off

Config Adc = Single , Prescaler = Auto , Reference = Avcc

'------------I2C-------------
Const Pcf8574_lcd = &H40                                    'I2C Adresse &H40
'------------I2C-------------
Const Faktor = 5 / 1023
Const Festwiederstand = 470
Dim Adcwert(2) As Integer
Dim Spannung(2) As Single
Dim Richtung As Byte
Dim Spannung_an_wiederstand As Single
Dim Gesamtstrom As Single
Dim Wiederstand(2) As Long
Dim Spannungsdifferenz As Single
Dim Durchlass_spannung As Single
'--------------------------------------
Dim _lcd_e As Byte
_lcd_e = 192
Dim A As Byte
Dim B As Byte

A = &B10000000                                              'pin 6 auf High
B = &B00000000
'--------------------------------------

Lcd "Dioden- und"
Lowerline
Lcd "Wiederstandtest"
Wait 1

Do

For Richtung = 1 To 2
  Ausgabe = Richtung

  Adcwert(richtung) = Getadc(0)

  If Richtung = 2 Then Adcwert(richtung) = 1023 -adcwert(richtung)
  Spannung(richtung) = Adcwert(richtung) * Faktor

  Spannung_an_wiederstand = 5.0 - Spannung(richtung)
  Gesamtstrom = Spannung_an_wiederstand / Festwiederstand   'I = U / R

  If Gesamtstrom > 0.0001 Then
     Wiederstand(richtung) = Spannung(richtung) / Gesamtstrom       'R = U / I
  Else
     Wiederstand(richtung) = 99999
  End If
Next Richtung

'Auswerten:
Spannungsdifferenz = Spannung(2) - Spannung(1)
Spannungsdifferenz = Abs(spannungsdifferenz)

'Anzeigen:
If Spannungsdifferenz > 0.5 Then
  If Spannung(1) < Spannung(2) Then
    Durchlass_spannung = Spannung(1)
  Else
    Durchlass_spannung = Spannung(2)
  End If

  Cls
  If Durchlass_spannung > 1.1 Then
    Lcd "LED     "
  Else
    Lcd "Diode   "
  End If
  Lcd "U:  " ; Fusing(durchlass_spannung , "#.#")

  Lowerline
  If Spannung(1) < Spannung(2) Then
    Lcd "Pin1 = Anode+"
  Else
    Lcd "Pin1 = Kathode-"
  End If
Else
  Cls
  Lcd "Wiederstand"
  Lowerline
  Lcd Wiederstand(2) ; "   Ohm"
End If
Wait 2

Loop
End


Vielen dank um ratschläge und tipps

Gruß Thorsten sch.
 
Lcd I2c In ein einen CODE Einbinden

Hallo Liebes Forum Besucher und Bastler

Hab heute gehoft das ich ne antwort darauf bekomme! leider nein schade aber verleicht kann mir jemnd dabei helfen ....
das währ super danke.

Gruß Thorsten Sch.
 
Hallo Kann mir nu jemand helfen I2C LCD in einen code einfügen

Hallo Forum Gemeinde und Bastler

Könnte mir irgendjemand mir helfen oder ein rat geben??? das währ super von euch DaNkE

Gruß Thorsten Sch.
 
Hallo Thorsten,

Könnte mir irgendjemand mir helfen oder ein rat geben??? das währ super von euch DaNkE
Ich hab mir das mal kurz duchgelesen (nicht den Code, nur den Text) ...

Dein Beitrag #1 ...
Zu mein projekt ich habe ein geschwindikeit messer mit kontakten (Kontakt1 5Meter abstandt Kontakt2).....
ich würde gern über den IC2 einen sensor nehmen=
---------------------------
1.)Distanz Sensor
oder
2.)radar sensor
oder
3.)Ultraschall
--------------------------
und jetzt meine frage es soll wie eine geschwindikeitanzeige werden die mann in der
30Zone findet????


Hier mal der code
...
Hier ist nun ne Menge Code
...


ich bitte euch um mithielfe und rat und tat.......

... und dein Beitrag #9 ...
Hallo Liebe Forum Gemeinde und Bastler

Wie oben in den 1 beitrag habe ich einfach mal versucht ein I2C LCD einzubinden....
Nur leider komme ich hier nicht sehr weit und hänge auf den schlauch schon alles versucht, hier der code mit I2C.lib und as da noch zugehört.
...
Hier ist wieder ne Menge Code
...


ich würde bei den code gerne das die Geschwindikeit nicht nur auf den 7Segmendten zu sehen ist sondern auch auf den I2C LCD ausgeben wird, nur leider
komme ich hier nicht weiter
..... Bitte um rat
-----------------------------------------------------------------------------------------------------------------------------------------------------
Den bei diesen code habe ich das hinbekommen=
...
und wieder ne Menge Code
...


Vielen dank um ratschläge und tipps

Deine erste Frage war also das "es eine Geschwindigkeitsanzeige wie in einer 30-Zone werden soll".

Deine zweite Frage war das du "auf dem Schlauch hängst und nicht weiter kommst"

Also die erste "Frage" sehe ich eher als Info was es mal werden soll (deine Zielvorstellung) und nicht als Frage. Nicht mehr und nicht weniger.

Deine zweite Frage ... Das du bei einem Problem nicht weiter kommst, das kann sich auch jeder vorstellen. Das kann aber auch keiner ändern. Das geht anderen genauso.

Was ist aber nun dein Problem? Was hast du versucht und an welcher Stelle hängt es? Wenn du dein Auto in die Werkstatt bringst sagst du ja auch nicht nur "Geht nicht" sondern ganz genau, "Reifen sind abgefahren" oder "der linke Blinker leuchtet nicht mehr" oder sowas. Also in der Kürze: Ohne eine wirkliche Info von dir wo es nun genau Probleme gibt wird dir wohl keiner weiterhelfen können. Es sitzt keiner von uns bei dir am Schreibtisch und schaut dir bei deinen Problemen über die Schulter. Es hat auch keiner eine Videoverbindung zu dir um zu sehen wo es Probleme gibt.

Hast du schonmal daran gedacht ein zweites Display auf normalem Weg (zB 4Bit-Betrieb) an den Atmel zu hängen um weitere Infos aus dem Programm rauszuholen die dir bei der Fehlersuche helfen könnten? Das selbe kann man auch über eine Serielle Verbindung (UART) zu einem PC machen. Dann kannst du interne Werte des Programms auf einem Terminal anzeigen lassen.

Wenn es irgendwo im Programm Probleme gibt, dann reduziert man den Code erstmal soweit das man nur noch das problematische übrig hat. Dann kümmert man sich nur um diesen Teil. Wenn das gelöst ist, dann baut man es wieder zusammen und geht zum nächsten Problem. Das ist systematische Fehlersuche.

Gruß
Dino
 
Hallo Kann mir nu jemand helfen I2C LCD in einen code einfügen

Hallo Dino und Bastler

werde mich heute abend ml hinsetzen und aufschreibe wie was und warum es so soll.......

Gruß Thorsten Sch.
 
Hallo Thorsten,

werde mich heute abend ml hinsetzen und aufschreibe wie was und warum es so soll.......
warum dein Projekt so sein soll ist den Leuten eigentlich "ziemlich egal". Du wirst dafür schon einen Grund haben warum dein Projekt genau so aussehen soll. Das ist deine Entscheidung genauso wie meine Entscheidung ist das ich morgens nicht ohne Frühstück aus dem Haus gehe. Das interessiert auch nicht wirklich einen anderen.

Was du mitteilen mußt ist wo es genau Probleme gibt und was du bereits alles versucht hast und was dabei rausgekommen ist. Wie gesagt ... es steht bei deinen Versuchen keiner von uns hinter dir. Du bist unsere Augen und Hände. Was du uns nicht mitteilst, das wissen wir nicht.

Wenn du also deine Hardware anders anschließt wie in Programmcode steht, dann sieht das niemand. Wenn du irgendwo auf dem Steckbrett den Widerstand einen Pin daneben steckt und der I2C-Bus dadurch keinen PullUp-Widerstand auf dem SDA hat, dann sieht das auch niemand. Dann rätselt man ohne Sinn und Verstand Tage rum warum es nicht läuft.

Wenn DU den Leuten nicht mit Infos hilfst dir bei deinem Problem zu helfen, dann wirst du am Ende ohne Antworten da stehen. Es wird keiner stundenlang seine Freizeit opfern um deinen gesamten Aufbau bei sich zuhause nachzubauen und dir eine fertige Lösung zu geben, weil was anderes kann man mit den wenigen Infos nicht machen. Selbst dann kann dein Aufbau aber noch einen Fehler haben oder etwas anders sein und damit selbst die fertige Lösung nicht funktionieren. Außerdem lernst du selber dabei nichts dazu um dich in dem Thema weiterzuentwickeln.

Gruß
Dino
 
Nunja, mich interessiert manchmal schon der Grund, warum man 'ne Sache so, und nicht anders lösen will. Dabei kann "Ich will es eben" durchaus ein akzeptabler Grund sein... es kann aber auch sein, daß es einfachere Möglichkeiten gäbe, die Sache anzugehen, und der TE diese einfach nicht kennt/gesehen hat.

Wenn es ein Konkretes Problem gibt (also zB, daß der Compiler beim compilieren irgend'n Fehler wirft) dann müßten wir diese konkrete Info aber auch bekommen.

Wenns eher ein allgemeines Problem ist, der TE zB nicht so recht weiß, wie die Aufgabe überhaupt angegangen werden sollte, dann müßten wir eben DIE GANZE Aufgabe präsentiert bekommen, um uns Gedanken zu machen, wie WIR das angehen würden.

Hier steht bisher (inzwischen) mehr oder weniger fest, daß ein Controller via TWI mit einem TWI-Entfernungssensor, und einem TWI-Display (Schieberegister+paralleles Display) verbunden sein soll (derselbe Bus?) Für das Display wird irgend'ne lib verwendet, und bei den Sensoren?.
Ferner gemultiplexte Siebensegmentanzeigen.

Also hier wäre jetzt zumindest mal ein Schaltplan sinnig.

Ansonsten, wie Dino sagte - erstmal einzelne Funktionen zum laufen bringen, danach das ganze zusammensetzen:
- nur Display über TWI, UART mit Terminal zum debuggen verwenden
- nur Sensoren über TWI, UART zum debuggen.
- Display und Sensoren an gemeinsamen Bus, UART...
- jetzt die Siebensegmente mit rein

Bei der gemeinsamen Nutzung des TWI ahne ich Probleme mit der TWI-LCD-Lib kommen... (aber nur'ne Vermutung)
 
Hi,

Nunja, mich interessiert manchmal schon der Grund, warum man 'ne Sache so, und nicht anders lösen will. Dabei kann "Ich will es eben" durchaus ein akzeptabler Grund sein... es kann aber auch sein, daß es einfachere Möglichkeiten gäbe, die Sache anzugehen, und der TE diese einfach nicht kennt/gesehen hat.

naja ... OK ... es interessiert nur soweit wie: "gibt es eine einfachere Möglichkeit das umzusetzen." ;)

Ansonsten, wie Dino sagte - erstmal einzelne Funktionen zum laufen bringen, danach das ganze zusammensetzen:
- nur Display über TWI, UART mit Terminal zum debuggen verwenden
- nur Sensoren über TWI, UART zum debuggen.
- Display und Sensoren an gemeinsamen Bus, UART...
- jetzt die Siebensegmente mit rein

Das haben bereits die Römer so gemacht ... Teile und herrsche! :p :cool:

Gruß
Dino
 
Hallo Dino und Bastler

werde mich heute abend ml hinsetzen und aufschreibe wie was und warum es so soll.......

Gruß Thorsten Sch.

Hallo Forum,
dino, Du solltest Deinen Magierstab auspacken…
… Spass bei Seite, eigentlich sollte es helfen, wenn man sich DIREKT nach dem man die Aufgabe erhalten hat, folgende Frage stellt: wie kann ich die mir gestellte Aufgabe lösen?
… und nicht, wer kann mir die Aufgabe lösen :rolleyes:


Dazu ist es natürlich wichtig zu erfassen was ich bzw. der Auftraggeber eigentlich will!
Kurze Zusammenfassung (so, wie ich es verstanden habe):

Der Themenstarter will via I2C-Bus eine Geschwindigkeit erfassen und zur Anzeige bringen – jetzt ist es wichtig, eine grosse Aufgabe in viele kleine zerlegen zu können => hier ist eine grobe Unterteilung möglich, nämlich in:
1. Geschwindigkeitserfassung
2. Anzeige, die die Geschwindigkeit in km/h und drei Symbole anzeigt

Da das alles über I2C-Bus erfolgen soll (warum eigentlich?), könnte man jetzt schon grob überlegen, welche Bauteile für diese zwei „Blöcke“ benötigt werden.
Für den Sensor:
Für den Sensor könnte ein Ultraschallsensor eingesetzt werden – dazu gibt es bereits fertige Lösungen als Module käuflich zu erwerben – sogar mit Bsp-Code => siehe Projekt „Zisternenfüllstandsanzeige“ von Markus (hatte dino auch schon gesagt).

Für die Anzeige via I2C-Bus:
Das Thema Anzeige kann jetzt zerlegt werden in :
2.1 Siebensegment-Anzeige
Für eine kontrastreichere Anzeige würde ich eine 7-Segmentanzeige einsetzen => 7-Segmentanzeige via I2C-Bus => SAA1064 => Datenblatt besorgen und lesen

2.2 Drei Symbole
Für die drei Symbole :(, :-| und :) könnte man mit LED’s lösen, die via I2C-Bus angesteuert werden => LED ansteuern via I2C-Bus => PCF8574 => Datenblatt besorgen und lesen.


Jetzt ist es wichtig, sich Schritt für Schritt mit den Unterthemen zu beschäftigen. Ich würde erst einmal mit dem Unterthema Anzeige beginnen – also für den Punkt 2.2 „LED-Ansteuerung via I2C-Bus“ => PCF8574 auf Lochraster aufbauen und Testprogramm entwickeln.

Falls das funktioniert, anschließend den SAA1064 auf Lochraster aufbauen und Testprogramm entwickeln.
Danach, wie ein anderes Forum-Mitglied auch schon empfohlen, beide Anzeigen und beide Testprogramme zusammenführen.

Erst jetzt kommt das Thema Sensor dran. Auch hier empfehle ich erst einmal das Datenblatt herunterzuladen und zu lesen.
Für das Modul würde ich wieder eine Lochrasterplatine verwenden und ein Testprogramm erstellen.
Ggf. würde ich hier nicht die oben erwähnte Anzeige einsetzen, sonder, weil es einfacher ist, ein Standard-LCD verwenden. Erst wenn das Unterthema sicher funktioniert, würde ich alles zusammenführen.


Hoffe, ich konnte etwas Licht in die Dunkelheit bringen ;-)

MfG
FreeVEE
 
Hallo Kann mir nu jemand helfen I2C LCD in einen code einfügen

Hallo Forum Bastler und alle anderen

Also zur meine schaltung zu kommen die schaltung ist schon soweit fertig sehe bild
Smiliy-geschwindikeitmesser (S).jpg
so die schaltung soll Säter mit einen ( I2C Sensor Messen ) ich will nur zum test sehe Code Nr.1 in diesen beitrag.
nur zum (TEST) ein I2C LCD einbinden und was anzeigen zu lassen und da kommt leider null koma null an.......
Code Nr.1
Code:
'In: Kontakte an D.2=Int0 und D.3=Int1 fuer Kontakte
'Out: Portd5:Smiley_grund Portd6:Smiley_lachen, portd7:Smiley_weinen
'Out: portc.1 C2, C3 katoden-Multiplexing
'
'Out: Portb: siebensegmendanzeige mit gemeinsamer Kathode (GND)
'Meine Multiplex Test Anzeige
'1-2-3-4-5-6--7-8----1--2--3--4--5
'g-f-a-b-e-dp-c-d----A1-A2-A3-----
'        --a--     a: Portb.1
'      f[     ]b   b: Portb.2
'       [     ]    c: Portb.3
'        --g--     d: Portb.4
'      e[     ]c   e: Portb.5
'       [     ]    f: Portb.6
'        --d--  °  g: Portb.7
'                 dp: Portb.0
'
$lib "Lcd_i2c.lib"                                          'ersetzt die Standard LCD Library
$regfile = "m8def.dat"
$crystal = 8000000

'---------I2C-Config----------
Const Pcf8574_lcd = &H40                                    'I2C Adresse &H40
Config I2cdelay = 15                                        'delay von 5=20µs=50kHz,10=10µs=100kHz;5=5µs=200KHz
Config Scl = Portc.5                                        'I2C SCL Pin
Config Sda = Portc.4                                        'I2C SDA Pin
Dim _lcd_e As Byte
_lcd_e = 192
'--------I2C-Config-----------

Config Portd = &B11110000
Portd = &B00001111
'D2, D3 für int0 , int1
Smiley Alias Portd
Const Smiley_lachen = &B01101111
Const Smiley_weinen = &B10101111
Const Smiley_aus = &B00001111

Config Portc.1 = Output                                     'Wahr Voher (config portc = Output
Config Portc.2 = Output
Config Portc.3 = Output

Config Portb = Output
Siebensegmentanzeige Alias Portb

'Timer fuer Hundertstel-Sekunden-Takt
Config Timer0 = Timer , Prescale = 1024                     '10ms
On Timer0 Hundertsteltimer
Const Timervorgabe_0 = 178

'Timer fuer Multiplex
Config Timer1 = Timer , Prescale = 1
On Timer1 Anzeige
Const Timervorgabe_1 = 25536

Config Int0 = Falling
On Int0 Starten
Enable Int0

Config Int1 = Falling
On Int1 Stoppen
Enable Int1

Enable Timer0
Enable Timer1
Enable Interrupts



Dim Zeit As Word
Dim Zahl As Word
Dim Zahl_temp As Word
Dim Geschwindigkeit As Single
Dim Einer As Word
Dim Zehner As Word
Dim Hunderter As Word
Dim Tausender As Word
Dim Ziffer As Byte
Dim Dezimalpunkt As Byte
Dim Dunkel As Byte
Dim Stelle As Byte
Dim I As Byte
Dim Lcd_infomation As String * 3

Dim Modus As Byte
Const Bereit = 1
Const Messen = 2
Const Anzeigen = 3
Const Gesperrt = 4
Modus = Bereit

Dim Hundertstel_sekunden As Long

'---------------------I2C-zum-TEST---------------------
Cls
Locate 1 , 1
Lcd "hallo"
Locate 2 , 1
Lcd "willkommen"
Wait 2
'---------------------I2C-zum-TEST---------------------

Zeit = 888                                                  'Wahr Voher 888
Dunkel = 0
Dezimalpunkt = 1

Smiley = Smiley_lachen
Wait 3
Smiley = Smiley_weinen
Wait 3
Smiley = Smiley_aus


Do

Select Case Modus
  Case Bereit:
     Zahl = 8888
     Dunkel = 1
     Dezimalpunkt = 1

  Case Messen :
    Zahl = Zeit
    If Zeit = 1000 Then Modus = Bereit                      'Voher 1000

  Case Anzeigen :
'     Dunkel = 0
'     Zahl = Zeit                                            'nur zur testzwecken die zeit kurz anzeigen
'     Wait 1                                                 'nur zur testzwecken die zeit kurz anzeigen
      Zahl = Round(geschwindigkeit )
      Lcd_infomation = "KMH"

     If Zahl > 40 Then                                      'wenn zu schnell dann Blinken
     Smiley = Smiley_weinen
       For I = 1 To 5                                       '5
         Dunkel = 0
         Waitms 500
         Dunkel = 1
         Waitms 500
       Next
     Else
       Smiley = Smiley_lachen
       Wait 3
     End If

     Smiley = Smiley_aus
     Dunkel = 1
     Wait 2
     Modus = Bereit

   Case Gesperrt
     Dezimalpunkt = 0
     Wait 2
     Modus = Bereit
End Select
Gosub Anzeige
Locate 1 , 1                                                'Cursor auf 1 Zeile, 1 Spalte
Lcd "RGB-Licht   =   " ; Lcd_infomation
Loop

End

'Multiplexer: (Zahl wird zerlegt und angezeigt)
Anzeige:
Timer1 = Timervorgabe_1
Zahl_temp = Zahl
Einer = Zahl_temp Mod 10

Zahl_temp = Zahl_temp - Einer
Zahl_temp = Zahl_temp / 10
Zehner = Zahl_temp Mod 10

Zahl_temp = Zahl_temp - Zehner
Zahl_temp = Zahl_temp / 10
Hunderter = Zahl_temp Mod 10

Zahl_temp = Zahl_temp - Hunderter
Zahl_temp = Zahl_temp / 10
Tausender = Zahl_temp Mod 10

If Stelle < 4 Then
  Incr Stelle
Else
  Stelle = 1
End If
If Stelle = 1 Then Ziffer = Einer
If Stelle = 2 Then Ziffer = Zehner
If Stelle = 3 Then Ziffer = Hunderter
If Stelle = 4 Then Ziffer = Tausender

Portc = &B11111111
Select Case Ziffer
  Case 0 : Siebensegmentanzeige = &B01111110
  Case 1 : Siebensegmentanzeige = &B00001100
  Case 2 : Siebensegmentanzeige = &B10110110
  Case 3 : Siebensegmentanzeige = &B10011110
  Case 4 : Siebensegmentanzeige = &B11001100
  Case 5 : Siebensegmentanzeige = &B11011010
  Case 6 : Siebensegmentanzeige = &B11111010
  Case 7 : Siebensegmentanzeige = &B00001110
  Case 8 : Siebensegmentanzeige = &B11111110
  Case 9 : Siebensegmentanzeige = &B11011110
End Select

If Stelle = 2 And Zahl < 10 Then Siebensegmentanzeige = &B00000000
'fuehrende Null Dunkel
If Stelle = 3 And Zahl < 100 Then Siebensegmentanzeige = &B00000000
'fuehrende Null Dunkel
If Stelle = 4 And Zahl < 1000 Then Siebensegmentanzeige = &B00000000
'fuehrende Null Dunkel

If Dunkel = 1 Then Siebensegmentanzeige = &B00000000
If Dezimalpunkt = Stelle Then Siebensegmentanzeige = Siebensegmentanzeige Or &B00000001
Portc.stelle = 0
Return



Hundertsteltimer:
Timer0 = Timervorgabe_0
'Incr Hundertstel_sekunden                                   'Auskommentiertes wenn teilung gewuenscht
'If Hundertstel_sekunden = 10 Then
  Incr Zeit
'   Hundertstel_sekunden = 0
'End If
Return

Starten:
If Modus = Bereit Then
  Start Timer0
  Zeit = 0
  Modus = Messen
  Dunkel = 1                                                'für testzwecke auf 0 setzen
  Dezimalpunkt = 3
End If
Return

Stoppen:
If Modus = Messen Then                                      'nur wenn Zeitmessung schon laeuft. nicht beimRückwärtsfahren Rueckwaertsfahren
  Stop Timer0

' Geschwindigkeit = Strecke / Zeit
  Geschwindigkeit = 5 / Zeit                                'Meter / Hunderstelsekunde
  Geschwindigkeit = Geschwindigkeit * 100                   ' m/s

' M / S * 60 * 60 / 1000 - > Km / H
  Geschwindigkeit = Geschwindigkeit * 3600
  Geschwindigkeit = Geschwindigkeit / 1000                  ' Km/h

  Modus = Anzeigen
  Dezimalpunkt = 0
Else
  Modus = Gesperrt
End If
Return
da ist nur zum ( TEST ) ein LCD eigefügt, um zu sehen ob es auch geht. Naja leider nein?
In diesen orginal code da Funktioniert ja alles.....
Code:
'In: Kontakte an D.2=Int0 und D.3=Int1 fuer Kontakte
'Out: Portd5:Smiley_grund Portd6:Smiley_lachen, portd7:Smiley_weinen
'Out: portc.1 C2, C3 katoden-Multiplexing
'
'Out: Portb: siebensegmendanzeige mit gemeinsamer Kathode (GND)
'Meine Multiplex Test Anzeige
'1-2-3-4-5-6--7-8----1--2--3--4--5
'g-f-a-b-e-dp-c-d----A1-A2-A3-----
'        --a--     a: Portb.1
'      f[     ]b   b: Portb.2
'       [     ]    c: Portb.3
'        --g--     b: Portb.4
'      e[     ]c   e: Portb.5
'       [     ]    f: Portb.6
'        --d--  °  g: Portb.7
'                 dp: Portb.0
'
$regfile = "m8def.dat"
$crystal = 8000000

Config Portd = &B11110000
Portd = &B00001111
'D2, D3 für int0 , int1
Smiley Alias Portd
Const Smiley_lachen = &B01101111
Const Smiley_weinen = &B10101111
Const Smiley_aus = &B00001111

Config Portc = Output

Config Portb = Output
Siebensegmentanzeige Alias Portb

'Timer fuer Hundertstel-Sekunden-Takt
Config Timer0 = Timer , Prescale = 1024                     '1024                     '10ms
On Timer0 Hundertsteltimer
Const Timervorgabe_0 = 178                                  '178

'Timer fuer Multiplex
Config Timer1 = Timer , Prescale = 1                        '1
On Timer1 Anzeige
Const Timervorgabe_1 = 25536

Config Int0 = Falling
On Int0 Starten
Enable Int0

Config Int1 = Falling
On Int1 Stoppen
Enable Int1

Enable Timer0
Enable Timer1
Enable Interrupts



Dim Zeit As Word
Dim Zahl As Word
Dim Zahl_temp As Word
Dim Geschwindigkeit As Single
Dim Einer As Word
Dim Zehner As Word
Dim Hunderter As Word
Dim Tausender As Word
Dim Ziffer As Byte
Dim Dezimalpunkt As Byte
Dim Dunkel As Byte
Dim Stelle As Byte
Dim I As Byte

Dim Modus As Byte
Const Bereit = 1
Const Messen = 2
Const Anzeigen = 3
Const Gesperrt = 4
Modus = Bereit

Dim Hundertstel_sekunden As Long



Zeit = 888                                                  'Wahr Voher 888
Dunkel = 0
Dezimalpunkt = 1

Smiley = Smiley_lachen
Wait 3
Smiley = Smiley_weinen
Wait 3
Smiley = Smiley_aus


Do

Select Case Modus
  Case Bereit:
     Zahl = 8888
     Dunkel = 1
     Dezimalpunkt = 1

  Case Messen :
    Zahl = Zeit
    If Zeit = 1000 Then Modus = Bereit                      'Voher 1000

  Case Anzeigen :
'     Dunkel = 0
'     Zahl = Zeit                                            'nur zur testzwecken die zeit kurz anzeigen
'     Wait 1                                                 'nur zur testzwecken die zeit kurz anzeigen
     Zahl = Round(geschwindigkeit )

     If Zahl > 40 Then                                      'wenn zu schnell dann Blinken
     Smiley = Smiley_weinen
       For I = 1 To 5                                       '5
         Dunkel = 0
         Waitms 500
         Dunkel = 1
         Waitms 500
       Next
     Else
       Smiley = Smiley_lachen
       Wait 3
     End If

     Smiley = Smiley_aus
     Dunkel = 1
     Wait 2
     Modus = Bereit

   Case Gesperrt
     Dezimalpunkt = 0
     Wait 2
     Modus = Bereit
End Select
Gosub Anzeige
Loop

End

'Multiplexer: (Zahl wird zerlegt und angezeigt)
Anzeige:
Timer1 = Timervorgabe_1
Zahl_temp = Zahl
Einer = Zahl_temp Mod 10

Zahl_temp = Zahl_temp - Einer
Zahl_temp = Zahl_temp / 10
Zehner = Zahl_temp Mod 10

Zahl_temp = Zahl_temp - Zehner
Zahl_temp = Zahl_temp / 10
Hunderter = Zahl_temp Mod 10

Zahl_temp = Zahl_temp - Hunderter
Zahl_temp = Zahl_temp / 10
Tausender = Zahl_temp Mod 10

If Stelle < 4 Then
  Incr Stelle
Else
  Stelle = 1
End If
If Stelle = 1 Then Ziffer = Einer
If Stelle = 2 Then Ziffer = Zehner
If Stelle = 3 Then Ziffer = Hunderter
If Stelle = 4 Then Ziffer = Tausender

Portc = &B11111111
Select Case Ziffer
  Case 0 : Siebensegmentanzeige = &B01111110
  Case 1 : Siebensegmentanzeige = &B00001100
  Case 2 : Siebensegmentanzeige = &B10110110
  Case 3 : Siebensegmentanzeige = &B10011110
  Case 4 : Siebensegmentanzeige = &B11001100
  Case 5 : Siebensegmentanzeige = &B11011010
  Case 6 : Siebensegmentanzeige = &B11111010
  Case 7 : Siebensegmentanzeige = &B00001110
  Case 8 : Siebensegmentanzeige = &B11111110
  Case 9 : Siebensegmentanzeige = &B11011110
End Select

If Stelle = 2 And Zahl < 10 Then Siebensegmentanzeige = &B00000000
'fuehrende Null Dunkel
If Stelle = 3 And Zahl < 100 Then Siebensegmentanzeige = &B00000000
'fuehrende Null Dunkel
If Stelle = 4 And Zahl < 1000 Then Siebensegmentanzeige = &B00000000
'fuehrende Null Dunkel

If Dunkel = 1 Then Siebensegmentanzeige = &B00000000
If Dezimalpunkt = Stelle Then Siebensegmentanzeige = Siebensegmentanzeige Or &B00000001
Portc.stelle = 0
Return



Hundertsteltimer:
Timer0 = Timervorgabe_0
'Incr Hundertstel_sekunden                                   'Auskommentiertes wenn teilung gewuenscht
'If Hundertstel_sekunden = 10 Then
  Incr Zeit
'   Hundertstel_sekunden = 0
'End If
Return

Starten:
If Modus = Bereit Then
  Start Timer0
  Zeit = 0
  Modus = Messen
  Dunkel = 1                                                'für testzwecke auf 0 setzen
  Dezimalpunkt = 3
End If
Return

Stoppen:
If Modus = Messen Then                                      'nur wenn Zeitmessung schon laeuft. nicht beimRückwärtsfahren Rueckwaertsfahren
  Stop Timer0

' Geschwindigkeit = Strecke / Zeit
  Geschwindigkeit = 5 / Zeit                                'Meter / Hunderstelsekunde
  Geschwindigkeit = Geschwindigkeit * 100                   ' m/s

' M / S * 60 * 60 / 1000 - > Km / H
  Geschwindigkeit = Geschwindigkeit * 3600
  Geschwindigkeit = Geschwindigkeit / 1000                  ' Km/h

  Modus = Anzeigen
  Dezimalpunkt = 0
Else
  Modus = Gesperrt
End If
Return

Die messung wird über den kontakt ( int0 ) gestartet, 5 Meter auseinnander Kontakt ( INT1 ) Gestoppt das
will ich ja später mit den I2C Sensoren Ultraschall machen.........

Aber warum um himmelswilen will die LCD in den Nr1 nicht irgendwie ein text ausgeben, was mache ich da falsch?????

Bitte euch um rat und Tipps

Mit Freundtlichen Grüßen
Thorsten Sch.
 
Zu Deinem Schaltplan empfehle ich Dir mal diesen Thread zu lesen. Wir müssen im Plan nicht unbedingt den Smiley sehen, da reicht ein entsprechender Kommentar aus. Wichtiger wäre, die erkennbarkeit was wo wie angeschlossen ist zu optimieren.
Es scheint so, als wenn Du den Smiley aus 24 LEDs realisierst. Jede LED besitzt einen eigenen Vorwiderstand (masseseitig) - jeweils 8 zusammen über ein Widerstandsnetzwerk. 16 der LEDs bilden parallel das "Grundgesicht", 4 den einen Mund, 4 den anderen.

Unklar ist, wie der 8fach-Darlington-Treiber das ansteuern soll, also die Anoden. AFAIK schaltet der Ausgang eines Kanals gegen Gnd, wenn der entsprechende Eingang Hi ist. Ansonsten ist der Ausgang offen (bzw mit der Freilaufdiode gegen Common geschaltet) - Wo soll da die Versorgung der LEDs herkommen?
Außerdem fehlen ein paar Junctions, oder?
Warum strukturierst Du den Plan nicht besser?
(Also die jeweiligen parallelen LEDs wirklich parallel zeichnen, Netze die irgendwas schalten sollen/'ne Kommunikationsfunktion haben benennen/bezeichnen, bei den Siebensegmenten würde ich die Segmentleitungen (a..g) so benennen, und als Bus zusammengeführt zeichnen. Dito bei der Stellenauswahl.)
Warum sind die Pinbezeichnungen nicht lesbar? so muß man ja raten...
Was ist mit AGnd?
Abblockkerkos an den Stromversorgungs-Pins?
Pullups bei den TWI-Leitungen?

Warum Relais bei den Interrupts? Optokoppler? Erzeugen die Relais nicht zusätzlich zu den Kontakten Prellen?
Wären bei den LEDs nicht vielleicht mehrere in Reihe schaltbar (also immer 2)? "Gelb" hat AFAIK so um die 2,1V das sollte die Verluste deutlich reduzieren
 
Hallo Kann mir nu jemand helfen I2C LCD in einen code einfügen

Hi Forum - Bastler und LotadaC

Nr1 Ich benutze Target zur schaltung erstellen.
Nr2 schaltung habe ich Grob erstellt wiw was und wo was ist
hier noch mal bildlicher
img005.jpg
verleicht hilft das ja weiter

Gruß Thorsten Sch.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)