Metainformationen zur Seite
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
computer:raspberrypi:projekte:matrix [2013/08/08 14:03]
gaubes [Raspberry Pi Programme]
computer:raspberrypi:projekte:matrix [2018/03/16 21:11] (aktuell)
Zeile 7: Zeile 7:
 Dazu wird das Arduino Programm ([[computer:​raspberrypi:​mit_arduino_koppeln|RaspberryPi mit Arduino koppeln]]) an ein weiteres Programm, welches eine Laufschrift anzeigen lässt angepasst: Dazu wird das Arduino Programm ([[computer:​raspberrypi:​mit_arduino_koppeln|RaspberryPi mit Arduino koppeln]]) an ein weiteres Programm, welches eine Laufschrift anzeigen lässt angepasst:
  
-<​code>​+<​code ​cpp>
 const int zeilenstart=2;​ // Pin ab dem die Zeilen anfangen const int zeilenstart=2;​ // Pin ab dem die Zeilen anfangen
 const int spaltenstart=10;​ // Pin ab dem die Spalten anfangen const int spaltenstart=10;​ // Pin ab dem die Spalten anfangen
Zeile 75: Zeile 75:
  
 === Parameterübergabe === === Parameterübergabe ===
-<​code>​+<​code ​python>
 import serial import serial
 import time import time
Zeile 103: Zeile 103:
 Über diese Internetseite kann man die benötigten Werte an das Python-Programm weiterreichen. Über diese Internetseite kann man die benötigten Werte an das Python-Programm weiterreichen.
  
-<​code>​+<​code ​php>
 <?php <?php
 $a = explode (",",​$_GET["​v"​]);​ $a = explode (",",​$_GET["​v"​]);​
Zeile 121: Zeile 121:
 Da es auf Dauer wenig Spaß macht jedesmal die LEDs bzw. die Parameter auszurechnen,​ programmiert man sich kurz eine Internetseite,​ die das ganze durch anklicken einer virtuellen Martix für einen berechnet und sofort an über die anderen Programme (Internetseite,​ Parameterübergabe,​ etc.)  an den Arduino bzw. die Matrix selbst weiterleitet. ​ Da es auf Dauer wenig Spaß macht jedesmal die LEDs bzw. die Parameter auszurechnen,​ programmiert man sich kurz eine Internetseite,​ die das ganze durch anklicken einer virtuellen Martix für einen berechnet und sofort an über die anderen Programme (Internetseite,​ Parameterübergabe,​ etc.)  an den Arduino bzw. die Matrix selbst weiterleitet. ​
 Davor muss man sich jedoch noch folgendes runterladen,​ um nicht über andere Server gehen zu müssen (Vgl. [[computer:​raspberrypi:​projekte:​blinken|Blinken]]):​ Davor muss man sich jedoch noch folgendes runterladen,​ um nicht über andere Server gehen zu müssen (Vgl. [[computer:​raspberrypi:​projekte:​blinken|Blinken]]):​
-<​code>​+<​code ​bash>
 wget http://​ajax.googleapis.com/​ajax/​libs/​jquery/​1/​jquery.min.js wget http://​ajax.googleapis.com/​ajax/​libs/​jquery/​1/​jquery.min.js
 </​code>​ </​code>​
  
-<​code> ​                                                           ​+<​code ​html>                                                            ​
 <​!DOCTYPE html> <​!DOCTYPE html>
 <​html>​ <​html>​
Zeile 168: Zeile 168:
 </​code>​ </​code>​
  
 +==== Netzwerkkontrolle ====
 Wenn man den Raspberry Pi über Wlan steuert (siehe [[computer:​raspberrypi:​netzwerk|Netzwerk]] ), sollte man sicherstellen,​ dass der Pi nicht die Verbindung zum Netz verliert. Dazu gibt es ein Script (/​home/​pi/​checkping),​ welches prüft ob eine Verbindung vorliegt und gegebenenfalls das Wlan deaktiviert und wieder aktiviert: Wenn man den Raspberry Pi über Wlan steuert (siehe [[computer:​raspberrypi:​netzwerk|Netzwerk]] ), sollte man sicherstellen,​ dass der Pi nicht die Verbindung zum Netz verliert. Dazu gibt es ein Script (/​home/​pi/​checkping),​ welches prüft ob eine Verbindung vorliegt und gegebenenfalls das Wlan deaktiviert und wieder aktiviert:
  
-<​code>​+<​code ​bash>
 #!/bin/bash #!/bin/bash
 IP=192.168.0.1 IP=192.168.0.1
Zeile 184: Zeile 185:
 </​code>​ </​code>​
  
-Damit dieses Script alle 5 Minuten ausgeführt wird speichert man eine Datei mit folgendem Inhalt im Ordner /etc/cron.d : +Damit dieses Script alle 5 Minuten ausgeführt wird speichert man eine Datei mit folgendem Inhalt im Ordner ​**/etc/cron.d** 
-<​code>​ +<​code ​bash
-*/5 *   * * *   ​/​home/​pi/​checkping > /dev/null 2>&1+*/5 *   * * *  ​root ​/​home/​pi/​checkping > /dev/null 2>&1 
 +</​code>​ 
 + 
 +==== Uhr ==== 
 +Um eine Uhr auf der Matrix anzeigen zu lassen, die sich für 20 Sekunden durch ein über Website programmierstes Muster überschreiben lässt benötigt man folgendes Script: 
 +<code python>​ 
 +import serial 
 +import time 
 +import sys 
 +import os 
 +import os.path 
 + 
 +delay = 0.01 
 +comunicacion = serial.Serial('/​dev/​ttyAMA0',​ 9600) 
 +comunicacion.close() 
 +comunicacion.open() 
 + 
 +m=([0,​0,​0,​0,​0,​0,​0,​0]) 
 +h=([0,​0,​0,​0,​0,​0,​0,​0]) 
 +s=([0,​0,​0,​0,​0,​0,​0,​0]) 
 + 
 +H = 0 
 +M = 0 
 +S = 0 
 + 
 +while True: 
 +    try: 
 +        timea = os.path.getmtime("/​tmp/​block"​) 
 +    except: 
 +        timea = time.time() 
 +    if os.path.isfile("/​tmp/​block"​) and time.time()-timea>​20:​  
 +        H=time.localtime().tm_hour%12 
 +        M=int(time.localtime().tm_min/​5) 
 +        S=int(time.localtime().tm_sec/​2) 
 +        while int(time.localtime().tm_sec/​2)==S:​ 
 +          time.sleep(delay) 
 + 
 +#​----------------------------------------------------------------------- ​  
 +#Minuten 
 + 
 +        m=[[0,​0,​0,​1,​1,​0,​0,​0],​ 
 +           ​[0,​0,​0,​0,​0,​1,​1,​0],​ 
 +           ​[0,​0,​0,​0,​0,​0,​0,​6],​ 
 +           ​[0,​0,​0,​0,​0,​0,​0,​24],​ 
 +           ​[0,​0,​0,​0,​0,​0,​0,​96],​ 
 +           ​[0,​0,​0,​0,​0,​128,​128,​0],​ 
 +           ​[0,​0,​0,​128,​128,​0,​0,​0],​ 
 +           ​[0,​128,​128,​0,​0,​0,​0,​0],​ 
 +           ​[96,​0,​0,​0,​0,​0,​0,​0],​ 
 +           ​[24,​0,​0,​0,​0,​0,​0,​0],​ 
 +           ​[6,​0,​0,​0,​0,​0,​0,​0],​ 
 +           ​[0,​1,​1,​0,​0,​0,​0,​0]] 
 +#​----------------------------------------------------------------------- 
 +#Stunden 
 +        h=[[0,​0,​0,​2,​2,​0,​0,​0],​ 
 +           ​[0,​0,​0,​0,​2,​2,​0,​0],​ 
 +           ​[0,​0,​0,​0,​0,​2,​4,​0],​ 
 +           ​[0,​0,​0,​0,​0,​0,​24,​0],​ 
 +           ​[0,​0,​0,​0,​0,​0,​48,​0],​ 
 +           ​[0,​0,​0,​0,​0,​64,​32,​0],​ 
 +           ​[0,​0,​0,​64,​64,​0,​0,​0],​ 
 +           ​[0,​0,​64,​64,​0,​0,​0,​0],​ 
 +           ​[0,​32,​64,​0,​0,​0,​0,​0],​ 
 +           ​[0,​24,​0,​0,​0,​0,​0,​0],​ 
 +           ​[0,​12,​0,​0,​0,​0,​0,​0],​ 
 +           ​[0,​4,​2,​0,​0,​0,​0,​0]] 
 + 
 +#​----------------------------------------------------------------------- ​        
 +#Sekunden 
 +        s=[[0,​0,​0,​1,​0,​0,​0,​0],​ 
 +           ​[0,​0,​0,​0,​1,​0,​0,​0],​ 
 +           ​[0,​0,​0,​0,​0,​1,​0,​0],​ 
 +           ​[0,​0,​0,​0,​0,​0,​1,​0],​ 
 +           ​[0,​0,​0,​0,​0,​0,​0,​1],​ 
 +           ​[0,​0,​0,​0,​0,​0,​0,​2],​ 
 +           ​[0,​0,​0,​0,​0,​0,​0,​4],​ 
 +           ​[0,​0,​0,​0,​0,​0,​0,​8],​ 
 +           ​[0,​0,​0,​0,​0,​0,​0,​16],​ 
 +           ​[0,​0,​0,​0,​0,​0,​0,​32],​ 
 +           ​[0,​0,​0,​0,​0,​0,​0,​64],​ 
 +           ​[0,​0,​0,​0,​0,​0,​0,​128],​ 
 +           ​[0,​0,​0,​0,​0,​0,​0,​128],​ 
 +           ​[0,​0,​0,​0,​0,​0,​128,​0],​ 
 +           ​[0,​0,​0,​0,​0,​128,​0,​0],​ 
 +           ​[0,​0,​0,​0,​128,​0,​0,​0],​ 
 +           ​[0,​0,​0,​128,​0,​0,​0,​0],​ 
 +           ​[0,​0,​128,​0,​0,​0,​0,​0],​ 
 +           ​[0,​128,​0,​0,​0,​0,​0,​0],​ 
 +           ​[128,​0,​0,​0,​0,​0,​0,​0],​ 
 +           ​[64,​0,​0,​0,​0,​0,​0,​0],​ 
 +           ​[32,​0,​0,​0,​0,​0,​0,​0],​ 
 +           ​[16,​0,​0,​0,​0,​0,​0,​0],​ 
 +           ​[8,​0,​0,​0,​0,​0,​0,​0],​ 
 +           ​[4,​0,​0,​0,​0,​0,​0,​0],​ 
 +           ​[2,​0,​0,​0,​0,​0,​0,​0],​ 
 +           ​[1,​0,​0,​0,​0,​0,​0,​0],​ 
 +           ​[1,​0,​0,​0,​0,​0,​0,​0],​ 
 +           ​[0,​1,​0,​0,​0,​0,​0,​0],​ 
 +           ​[0,​0,​1,​0,​0,​0,​0,​0]] 
 +#​----------------------------------------------------------------------- ​        
 + 
 + 
 +        for a in [0,0,0]: 
 +                comunicacion.write(chr( 0 )) 
 +                time.sleep(delay) 
 + 
 +        for i in range(0,​8):​ 
 +                t_i = m[M][i] | h[H][i] | s[S][i] 
 +                print t_i 
 +                comunicacion.write(chr( int(t_i) )) 
 +                time.sleep(delay) 
 + 
 +    else: 
 +        time.sleep(1) 
 + 
 +</​code>​ 
 +Damit das Programm uhr.py automatisch beim Start des Raspberry Pis im Hintergrund mitgestartet wird, fügt man folgende Zeilen in **/​etc/​rc.local** hinzu: 
 +<code bash> 
 + 
 +#!/bin/sh -e 
 +
 +# rc.local 
 +
 +# This script is executed at the end of each multiuser runlevel. 
 +# Make sure that the script will "exit 0" on success or any other 
 +# value on error. 
 +
 +# In order to enable or disable this script just change the execution 
 +# bits. 
 +
 +# By default this script does nothing. 
 + 
 +python /​home/​pi/​uhr.py & 
 + 
 +exit 0 
 </​code>​ </​code>​