2017-02-16 5 views
0

Tout le monde. J'ai beaucoup regardé et essayé pour la première fois de communiquer avec deux écrans LCD sur i2c. Tout a bien fonctionné, mais maintenant je veux juste trouver le moyen d'initialiser les communications sur n'importe quel écran LCD en cas d'échec de l'une de leurs connexions (mauvais contact, mise hors tension, etc.). Selon ce code, ils travaillent séparément en même temps. Mais, quand je fais un essai essaye de déconnecter au fil principal ou à certains de leurs fils, tout devient avec le problème. Le programme continue à fonctionner sans problème, mais l'indication dans les affichages LED n'est pas possible la plupart du temps et je voudrais savoir ce que je fais mal parce que j'ai lu et ai regardé beaucoup d'exemples et de questions mais ne peux toujours pas trouver la réponse .Plusieurs écrans LCD sur i2c avec framboise pi 2

Voici le code python:

import lcddriver 
from time import * 
import sys 

a=0 
b=0 
#https://www.youtube.com/watch?v=YUII39FzUb4  my reference 

lcd = lcddriver.lcd(0x27) #Address firs display 
print ("Display 1 done") 
lcd2 = lcddriver.lcd(0x23) #Address second display 
print ("Display 2 done") 
sleep(1) 
lcd.lcd_display_string(" ElectroMESH ", 1) 
lcd.lcd_display_string("Prueba Raspberry y", 2) 
#One part in the first display 
lcd2.lcd_display_string("LCD 20x4 via i2c ", 3) 
lcd2.lcd_display_string("  via I2C", 4) 
#The other part in the second display 
sleep(1) 

for i in range(1,86400): 

    try: 
     a=1 
     b=0   #Here I'm trying to make an idea of display status flag 
     lcd.lcd_display_string(str(i), 4, 1) 
     a=0 
     b=1 
     lcd2.lcd_display_string(str(i+8), 2, 1) #i+8 to ensure differents texts 
     b=0 
     #Activate flag after indication 
     except IOError:  #The action that runs after display is lost 
     print ("sistema desconectado a y b") 
     if a and b: 
     lcd = lcddriver.lcd(0x27) 
     print ("Sistema 0x27 inicializado if a y b") 
     a = 0 
     lcd2 = lcddriver.lcd(0x23) 
     print ("Sistema 0x23 inicializado if a y b") 
     b = 0 
     sys.exc_clear() 
     elif a==1 and b==0: 
     lcd = lcddriver.lcd(0x27) 
     print ("Sistema 0x27 inicializado if a") 
     a = 0 
     sys.exc_clear() 
     elif a==0 and b==1: 
     lcd2 = lcddriver.lcd(0x23) 
     print ("Sistema 0x23 inicializado if b") 
     b = 0 
     else: 
     print ("OK...conexion recuperada") 
     sys.exc_clear() 
sleep(1) #Each second prints in the terminal to show results 
print(i) 

J'ai essayé timeout_exceptions mais je ne réussi. J'espère avoir des réponses ou demander plus de détails si vous en avez besoin car c'est mon premier article et je fais de mon mieux pour essayer de le demander.

+0

Vous devez écrire le programme du contrôleur physique dans Visual C++ ou quelque chose comme ça, puis l'interface avec votre application dans MATLAB – Moose

Répondre

-1

Après un certain temps et en lisant beaucoup, j'ai pu trouver des informations et des utilitaires très utiles en utilisant node-red, try et exceptions et le serveur MQTT. Après tout, tout a bien fonctionné et les choses étaient juste pour adapter tout ce que j'ai trouvé sur le web et les manuels.