Difference between revisions of "Arduino::LEDControl"
(New page: thumb| 8x8 LED matrica ar MAX7219 LEDControl bobliotēka - programmatūra, lai ar Arduino varetu darbinat 8x8 LED matricu, ko vada MAX7219 vai MAX7221 kontrol...) |
(→Piemērs lietojuma programmai) |
||
| (5 intermediate revisions by the same user not shown) | |||
| Line 2: | Line 2: | ||
LEDControl bobliotēka - programmatūra, lai ar Arduino varetu darbinat 8x8 LED matricu, ko vada MAX7219 vai MAX7221 kontrolieris. |
LEDControl bobliotēka - programmatūra, lai ar Arduino varetu darbinat 8x8 LED matricu, ko vada MAX7219 vai MAX7221 kontrolieris. |
||
== Draiveris == |
|||
[https://www.dropbox.com/s/xhmao0hcd1fgd21/max7219.h?dl=1 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 == |
|||
[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);
}
}