C - Tutorials (Arduino kompatibel) für fortgeschrittene Anwender zu den verschiedensten Raspbotics-Boards.

LED Pipe Bausatz
Ledpipe - LED Muster [Anwendungsvideo]
Programmieren verschiedener LED Muster in der kostenlosen Arduino IDE.
Mit ansteigendem Schwierigkeitsgrad wird die Programmierung interessanter LED Muster und Lauflichter vorgestellt.
Hardware: Joystick, Taster, Licht - und Entfernungssensor, Ledpipe mit 64 LEDs.
Software: Abfragen, Zählschleifen, Funktionen Video zur Programmierung verschiedener LED-Muster der Ledpipe in C (Arduino IDE).




Mit einem Klick auf die Zeilennummern erhalten Sie weitere hilfreiche Informationen.
Python Hilfe


Pixelvielfalt

Mit dem Joystick sind 4 verschiedene Pixelmuster wählbar. Der Kreativität sind keine Grenzen gesetzt, um ähnliche oder komplett verrückte Pixelmuster zu erzeugen.
Lernziele:
LED Matrix, SPI Protokoll, Eingänge (Joystick), if - else, for, Bitmanipulation, Funktionen

 Programmcode ausblenden/einblenden 

Schrift:   größer | kleiner            fett | normal
1   #include <PinChangeInt.h>
2   #include <SPI.h>
 
3   #define MAX7219_TEST 0x0f
4   #define MAX7219_BRIGHTNESS 0x0a
5   #define MAX7219_SCAN_LIMIT 0x0b
6   #define MAX7219_DECODE_MODE 0x09
7   #define MAX7219_SHUTDOWN 0x0C
 
8   #define SS_PIN 10
 
9   #define Joy_DOWN   8
10   #define Joy_LEFT   7
11   #define Joy_UP     6
12   #define Joy_RIGHT  5
 
13   byte Muster=2;
 
14   void maxTransferCMD(uint8_t address, uint8_t value) {
15     digitalWrite(SS_PIN, HIGH);
16     SPI.transfer(address);
17     SPI.transfer(value);
18     digitalWrite(SS_PIN, HIGH);
19  }
 
20   void maxTransferDATA(uint8_t address, uint8_t value) {
21     digitalWrite(SS_PIN, HIGH);
22     SPI.transfer(address);
23     SPI.transfer(value);
24     digitalWrite(SS_PIN, HIGH);
25  }
 
26   void setup(void)
27  {
28     digitalWrite(Joy_UP, INPUT_PULLUP);
29     digitalWrite(Joy_LEFT, INPUT_PULLUP);
30     digitalWrite(Joy_RIGHT, INPUT_PULLUP);
31     digitalWrite(Joy_DOWN, INPUT_PULLUP);
 
32     attachPinChangeInterrupt(Joy_UP, interrupt_joy_up, CHANGE);
33     attachPinChangeInterrupt(Joy_LEFT, interrupt_joy_left, CHANGE);
34     attachPinChangeInterrupt(Joy_RIGHT, interrupt_joy_right, CHANGE);
35     attachPinChangeInterrupt(Joy_DOWN, interrupt_joy_down, CHANGE);
 
36     pinMode(SS_PIN, OUTPUT);
37     SPI.setBitOrder(MSBFIRST);
38     SPI.begin();
 
39     maxTransferCMD(MAX7219_TEST, 0x00);
40     maxTransferCMD(MAX7219_DECODE_MODE, 0x00);
41     maxTransferCMD(MAX7219_BRIGHTNESS, 0x0F);
42     maxTransferCMD(MAX7219_SCAN_LIMIT, 0x00);
43     maxTransferCMD(MAX7219_SHUTDOWN, 0x01);
 
44     clear_display();
45  }
 
46   void interrupt_joy_up(){
47     if(digitalRead(Joy_UP)){}else{Muster=4;}
48  }
49   void interrupt_joy_left(){
50     if(digitalRead(Joy_LEFT)){}else{Muster=1;}
51  }
52   void interrupt_joy_right(){
53     if(digitalRead(Joy_RIGHT)){}else{Muster=3;}
54  }
55   void interrupt_joy_down(){
56     if(digitalRead(Joy_DOWN)){}else{Muster=2;}
57  }
 
58   void loop(void)
59  {
60     if (Muster==1){
61       Muster1();
62    }
63     if (Muster==2){
64       Muster2();
65    }
66     if (Muster==3){
67       Muster3();
68    }
69     if (Muster==4){
70       Muster4();
71    }
72  }
 
73   void clear_display(void){
74     byte i;
75     for(i=1;i<9;i++){
76       maxTransferDATA(i,0);
77    }
78  }
 
79   void Muster1(void){
80     byte i;
81     for(i=1;i<9;i++){
82       maxTransferDATA(i,255);
83       delay(100);
84    }
85     clear_display();
86  }
87   void Muster2(void){
88     byte i,j;
89     for(j=0;j<8;j++){
90       for(i=1;i<9;i++){
91         maxTransferDATA(i,1<<j);
92         delay(50);
93      }
94    }
95     clear_display();
96  }
97   void Muster3(void){
98     byte i,j;
99     for(i=0;i<8;i++){
100       if((i%2)==0){
101         clear_display();
102         for(j=0;j<8;j++){
103           maxTransferDATA(j+i,1<<i);
104           delay(100);
105        }
106      }
107       else{
108         clear_display();
109         for(j=0;j<8;j++){
110           maxTransferDATA(8-j,1<<i);
111           delay(50);
112        }
113      }
114    }
115  }
116   void Muster4(void){
117     byte i;
118     clear_display();
119     for(i=0;i<10;i++){
120       maxTransferDATA(random(1,9),1<<random(0,8));
121    }
122     delay(50);
123  }


Newsletter - Email eintragen!
 Anmelden
 Abmelden

RASPBOTICS
E-mail: info@raspbotics.at


© Ket4up, raffaelemontillo, Vadim Georgiev, Lightspring / shutterstock.com