Erledigt Frage wie sensoren IC2 einbinden (sensor)

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

Was vergessen
Code:
'Darstellung Atmega Mit Segmendeten Und
'
'
'               RESET- PC6-I---_---I-PC5  - I2C = SCL
'                 RXD- PD0-I       I-PC4  - I2C = SDA
'                 TXD- PD1-I   A   I-PC3  - ( anzeige3 )
'          START INT0- PD2-I   T   I-PC2  - ( anzeige2 )
'          STOP  INT1- PD3-I   M   I-PC1  - ( anzeige1 )
'                      PD4-I   E   I-PC0
'                  5+- VCC-I   G   I-GND
'                 GND- GND-I   A   I-AREF
'            SEG( g )- PB6-I       I-AVCC - 5+
'            SEG( f )- PB7-I   8   I-PB5  - ( e ) SEG
'     SMILEY (Kreis) - PD5-I       I-PB4  - ( d ) SEG
'     SMILEY (Lachen)- PD6-I       I-PB3  - ( c ) SEG
'     SMILEY (Weinen)- PD7-I       I-PB2  - ( b ) SEG
'           SEG (dp )- PB0-I-------I-PB1  - ( a ) SEG
'
'
'Anschlüsse des ATmega8
'
'7 Segmendte
'        --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
'            anzeige: Portc.1
'
'Für Start und stop welche Kontakte da???
Gruß Thorsten Sch.
 
Hallo Kann mir nu jemand helfen I2C LCD in einen code einfügen

Und so werde ich den I2C Bus machen.....
Unbenannt.JPG

Mit Freundtlichen Grüßen
Thorsten Sch.
 
Hi,

ich habe mal eben schnell Deinen Schaltplan aus #18 mit Eagle "abgemalt" (meiner Meinung nach übersichtlicher):
pic.png
Fehler habe ich nicht korrigiert, lediglich die Stromversorgungspins des Controllers.

Bei 5V, und LEDs mit ca 2V Forwärtsspannung würde ich immer 2 LEDs in Reihe schalten, dadurch werden einerseits die Vorwiderstände kleiner, andererseits wird die Zahl der parallelen LEDs halbiert. Beides reduziert erheblich die Verluste, einerseits durch den halben Strom, andererseits durch den geringeren Spannungsabfall an jedem Widerstand. Außerdem könnte sich auch das Layout vereinfachen.

Das mit dem Darlington-IC kann meiner Meinung nach sorum auch nicht klappen - andersrum würde es gehen (also von den Widerstandsnetzwerken kommt Vcc über die (umzudrehenden) LEDs - der Darlington zieht dann die LED-Kathode auf Gnd).

Bei den Relais sollten Freilaufdioden (parallel zur Wicklung) mit rein - zumindest, wenn die (primärseitig) dieselbe Versorgung verwenden, wie der Rest der Schaltung. Inzwischen hast Du ja in dem anderen Beitrag die Taster direkt an den Controller gelegt. Aber eigentlich willst Du ja irgendwie(!) TWI-Entfernungssensoren verwenden. Dann käme das ganz raus.

Die Pullups an den TWI-Leitungen scheinst Du (jetzt) an den Sensoren platzieren zu wollen. Da wäre im Schaltplan ein entsprechender Hinweis nützlich gewesen.

Was soll denn nun eigentlich überhaupt über TWI an den Controller angebunden werden? Also einerseits nur zum testen, andererseits final?

Was ist nun aus dem Display geworden?

Die nicht verwendeten Eingänge des ULN würde ich auf einen festen Pegel legen (Gnd).

Dem UART würde ich noch'ne Stiftleiste spendieren (ggf mit Vcc und Gnd), damit man da zum debuggen (ggf mit'nem Pegelwandler (RS232/USB)) Ausgaben auf 'nem Terminal erzeugen kann.

Wie ist das mit dem Aufspielen neuer Firmware? kann ja beim Debuggen durchaus viele Versuche kosten? einen ISP-Anschluß vorgesehen?

Wenn das alles geklärt ist, kannst Du Dich (stückweise) an die Firmware heranwagen.
 
:offtopic:
Nettes Projekt :)
Da Bascom kann ich leider nicht helfen.

Aber nicht dass das nachher in so etwas endet :D
Konnt mir das grade nicht verkneifen, sorry :rolleyes:
 
Hallo Kann mir nu jemand helfen I2C LCD in einen code einfügen

Hallo Liebe Forum Gemeinde und Bastler

Hiermit stelle ich meine neue Schltung rein und findet sie okay......
Unbenannt.png

So Mit freundtlichen Grüßen
Thorsten Sch.

Ups sehe grade habe die start und stop garnicht dabei.... hoppla wird nachgereicht...
 
Hallo Thorsten,
Hiermit stelle ich meine neue Schltung rein und findet sie okay......
Anhang anzeigen 6079

bei dem ULN2803 hast du die LEDs falsch herum eingezeichnet. Die Portpins PC3..1 treiben jeweils bis zu 8 LEDs der 7 Segmentanzeigen, der maximale Strom ist hier ausreichend klein? (Ich habe das Thema leider nicht mitverfolgt, vielleicht wurde hier schon einmal drauf eingegangen oder geklärt.)

Dirk :ciao:
 
Hallo Kann mir nu jemand helfen I2C LCD in einen code einfügen

Hallo liebe Forum Besucher und Bastler
hier meine neue schaltung die Start und Stop mit Optokopler fallen ja eigendlich weg wegen den I2C Sensor.....
Unbenannt.png

Ach ja habe mal den Bascom code mal mit der Terminal abgefragt es kommt was an nur wenn ich das I2C LCD dazu Füge kommt weder noch was bei Seria
oder beim I2C port was an???? woran liegt das???

Hier mal der Code mit Serial und I2C...
Code:
$lib "Lcd_i2c.lib"                                          'ersetzt die Standard LCD Library
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40
$baud = 2400

'---------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.2 = Input                                      'Int0 = Start
Pind.2 = 1
Config Portd.3 = Input                                      'Int1 = Stop
Pind.3 = 1

Smiley Alias Portd
Const Smiley_lachen = &B01100000
Const Smiley_weinen = &B10100000
Const Smiley_aus = &B00000000

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
Print "Hallo Smiley Km/H Anzeige"
Lcd "hallo"
Locate 2 , 1
Print "wilkommen es Geht"
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

Mit Freundtlichen Grüßen
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)