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/09/09 10:16]
gaubes
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 171: Zeile 171:
 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 185: 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 *   * * *  root /​home/​pi/​checkping > /dev/null 2>&1 */5 *   * * *  root /​home/​pi/​checkping > /dev/null 2>&1
 </​code>​ </​code>​
  
 ==== Uhr ==== ==== 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>​