Difference between revisions of "Arduino::LEDControl"

From DiLab
Jump to: navigation, search
(Piemērs lietojuma programmai)
 
(3 intermediate revisions by the same user not shown)
Line 7: Line 7:
[https://www.dropbox.com/s/xhmao0hcd1fgd21/max7219.h?dl=1 Max7219.h] draivera kods:
[https://www.dropbox.com/s/xhmao0hcd1fgd21/max7219.h?dl=1 Max7219.h] draivera kods:


//===== MAX 7219 driver ====
//===================================
// 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>
#include <SPI.h>
// You may redefine this pin
// You may redefine this pin
#ifndef
#ifndef SS_PIN
#define SS_PIN 10
#define SS_PIN 10
#endif
#endif
Line 26: Line 36:
// Send a command to max7219
// Send a command to max7219
//------------------------------------------
//------------------------------------------
void max72SendCMD(uint8_t address, uint8_t value)
void max72SendCMD(uint8_t address, uint8_t value) {
{
digitalWrite(SS_PIN, LOW);
digitalWrite(SS_PIN, LOW);
SPI.transfer(address); // Send address.
SPI.transfer(address); // Send address.
Line 37: Line 46:
// Send data to one max7219 (matrix)
// Send data to one max7219 (matrix)
//------------------------------------------
//------------------------------------------
void max72SendDATA(uint8_t address, uint8_t value)
void max72SendDATA(uint8_t address, uint8_t value) {
{
digitalWrite(SS_PIN, LOW);
digitalWrite(SS_PIN, LOW);
SPI.transfer(address); // Send address.
SPI.transfer(address); // Send address.
Line 46: Line 54:
//------------------------------------------
//------------------------------------------
// Initialize the controller. Call this from setup()
// Call this from setup()
//------------------------------------------
//------------------------------------------
void max72Init()
void max72Init()
Line 63: Line 71:
max72SendCMD(MAX7219_SHUTDOWN, 0x01); // Turn on chip.
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
Piemērs programmai, kas izspīdina nejaušus punktus uz LED matricas
//--------------------
//--------------------
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 11:28, 1 November 2016

8x8 LED matrica ar MAX7219

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); 
  }
}