Difference between revisions of "Arduino::LEDControl"
(→Piemērs lietojuma programmai) |
|||
(One intermediate revision by the same user not shown) | |||
Line 77: | Line 77: | ||
== Piemērs lietojuma programmai == |
== Piemērs lietojuma programmai == |
||
[https://www.dropbox.com/s/k77jv799rs8yt8n/leo-8x8matrix_random.ino?dl=1 Programma], kas izspīdina nejaušus punktus uz LED matricas |
[https://www.dropbox.com/s/k77jv799rs8yt8n/leo-8x8matrix_random.ino?dl=1 Programma], kas izspīdina nejaušus punktus uz LED matricas |
||
#include "max7219.h |
|||
//-------------------- |
|||
//-------------------- |
|||
void setup() |
|||
{ |
|||
Serial.begin(9600); |
|||
Serial.println("Debug MAX7219"); |
|||
max72Init(); |
|||
} |
|||
//-------------------- |
|||
//-------------------- |
|||
void loop() |
|||
{ |
|||
uint8_t row=0; |
|||
int i=0, ud=1; |
|||
for(;;) |
|||
{ |
|||
i += ud; |
|||
if (i>255) {ud=-1;i=255;} |
|||
if (i<0) {ud=1 ;i=0;} |
|||
if (row++>8) row=1; |
|||
max72SendDATA(row, random(0,255)); |
|||
max72SendCMD(MAX7219_BRIGHTNESS, i>>4); |
|||
delay(10); |
|||
} |
|||
} |
Latest revision as of 10:28, 1 November 2016
LEDControl bobliotēka - programmatūra, lai ar Arduino varetu darbinat 8x8 LED matricu, ko vada MAX7219 vai MAX7221 kontrolieris.
Draiveris
Max7219.h draivera kods:
//=================================== // MAX 7219 easy driver // // Assume the following connection to the Arduino pins: // // VCC => Arduino 5V // GND => Arduino GND // DIN => Arduino 11 // CS => Arduino 10 // CLK => Arduino 13 //=================================== #include <SPI.h> // You may redefine this pin #ifndef SS_PIN #define SS_PIN 10 #endif // MAX7219 SPI LED Driver #define MAX7219_TEST 0x0f // in real code put into a .h file #define MAX7219_BRIGHTNESS 0x0a // in real code put into a .h file #define MAX7219_SCAN_LIMIT 0x0b // in real code put into a .h file #define MAX7219_DECODE_MODE 0x09 // in real code put into a .h file #define MAX7219_SHUTDOWN 0x0C // in real code put into a .h file //------------------------------------------ // Send a command to max7219 //------------------------------------------ void max72SendCMD(uint8_t address, uint8_t value) { digitalWrite(SS_PIN, LOW); SPI.transfer(address); // Send address. SPI.transfer(value); // Send the value. digitalWrite(SS_PIN, HIGH); // Finish transfer. } //------------------------------------------ // Send data to one max7219 (matrix) //------------------------------------------ void max72SendDATA(uint8_t address, uint8_t value) { digitalWrite(SS_PIN, LOW); SPI.transfer(address); // Send address. SPI.transfer(value); // Send the value. digitalWrite(SS_PIN, HIGH); // Finish transfer. } //------------------------------------------ // Call this from setup() //------------------------------------------ void max72Init() { pinMode(SS_PIN, OUTPUT); SPI.setBitOrder(MSBFIRST); // Reverse the SPI Data o/p. SPI.begin(); // Start SPI // Run test - All LED segments lit. max72SendCMD(MAX7219_TEST, 0x01); delay(1000); max72SendCMD(MAX7219_TEST, 0x00); // Finish test mode. max72SendCMD(MAX7219_DECODE_MODE, 0x00); // Disable BCD mode. max72SendCMD(MAX7219_BRIGHTNESS, 0x00); // Use lowest intensity. max72SendCMD(MAX7219_SCAN_LIMIT, 0x0f); // Scan all digits. max72SendCMD(MAX7219_SHUTDOWN, 0x01); // Turn on chip. } //================
Piemērs lietojuma programmai
Programma, kas izspīdina nejaušus punktus uz LED matricas
#include "max7219.h //-------------------- //-------------------- void setup() { Serial.begin(9600); Serial.println("Debug MAX7219"); max72Init(); } //-------------------- //-------------------- void loop() { uint8_t row=0; int i=0, ud=1; for(;;) { i += ud; if (i>255) {ud=-1;i=255;} if (i<0) {ud=1 ;i=0;} if (row++>8) row=1; max72SendDATA(row, random(0,255)); max72SendCMD(MAX7219_BRIGHTNESS, i>>4); delay(10); } }