pi-i2c-nano-neomatrix-ex3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[TeleportDresser]]
#code(C){{
// Adafruit_NeoMatrix example for single NeoPixel Shield.
// Scrolls 'Howdy' across the matrix in a portrait (verti...
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#ifndef PSTR
#define PSTR // Make Arduino Due happy
#endif
#include <Wire.h>
#define SLAVE_ADDRESS 0x30
int status = 0;
#define PIN 6
// MATRIX DECLARATION:
// Parameter 1 = width of NeoPixel matrix
// Parameter 2 = height of matrix
// Parameter 3 = pin number (most are valid)
// Parameter 4 = matrix layout flags, add together as nee...
// NEO_MATRIX_TOP, NEO_MATRIX_BOTTOM, NEO_MATRIX_LEFT, ...
// Position of the FIRST LED in the matrix; pick two,...
// NEO_MATRIX_TOP + NEO_MATRIX_LEFT for the top-left ...
// NEO_MATRIX_ROWS, NEO_MATRIX_COLUMNS: LEDs are arrang...
// rows or in vertical columns, respectively; pick on...
// NEO_MATRIX_PROGRESSIVE, NEO_MATRIX_ZIGZAG: all rows/...
// in the same order, or alternate lines reverse dire...
// See example below for these values in action.
// Parameter 5 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel product...
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pix...
// NEO_GRB Pixels are wired for GRB bitstream (most...
// NEO_GRBW Pixels are wired for GRBW bitstream (RGB...
// NEO_RGB Pixels are wired for RGB bitstream (v1 F...
// Example for NeoPixel Shield. In this application we'd...
// as a 5x8 tall matrix, with the USB port positioned at ...
// Arduino. When held that way, the first pixel is at th...
// lines are arranged in columns, progressive order. The...
// 800 KHz (v2) pixels that expect GRB color data.
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(4, 75, PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG,
NEO_GRB + NEO_KHZ800);
const int b0 = 2; // the number of the pushbutton pin
const int b1 = 3;
const int b2 = 4;
const int b3 = 5;
const uint16_t colors[] = {
matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matri...
void setup() {
matrix.begin();
// matrix.setTextWrap(false);
matrix.setBrightness(40);
// matrix.setTextColor(colors[0]);
pinMode(b0, INPUT_PULLUP);
pinMode(b1, INPUT_PULLUP);
pinMode(b2, INPUT_PULLUP);
pinMode(b3, INPUT_PULLUP);
int b0State = digitalRead(b0);
int b1State = digitalRead(b1);
int b2State = digitalRead(b2);
int b3State = digitalRead(b3);
int x=((b3State*2+b2State)*2+b1State)*2+b0State;
Serial.begin(115200);
// initialize i2c as slave
Wire.begin(SLAVE_ADDRESS+x);
Wire.setClock(400000); //400Khz i2c clock
// define callbacks for i2c communication
Wire.onReceive(receiveEvent);
Wire.onRequest(requestEvent);
}
int x = matrix.width();
int pass = 0;
void loop() {
delay(10);
}
char cmd[32];
// call back for receive data
void receiveEvent(int byteCount){
// command:
// clear... 0x00
// show ... 0x01
// set1 ix,iy,r,g,b
// ... 0x02 *,*, *,*,*
// setn ix,iy,n, r0,g0,b0, ..r(n-1),g(n-1),b(n-1) n<=8
// ... 0x03 *,*, *, *,*,*, ..., *,*,*
int i=0;
while(Wire.available()) {
cmd[i] = Wire.read();
i++;
}
int n=i;
/*
for(i=0;i<n;i++){
Serial.print(" "); Serial.print(cmd[i],HEX);
}
Serial.println(" ");
*/
if(cmd[0]==0x00){
matrix.fillScreen(0);
}
else
if(cmd[0]==0x01){
matrix.show();
delay(5);
}
else
if(cmd[0]==0x02){ //set1
// set1 ix,iy,r,g,b
// ... 0x02 *,*, *,*,*
int ix=cmd[1];
int iy=cmd[2];
int r=cmd[3];
int g=cmd[4];
int b=cmd[5];
int16_t c=matrix.Color(r,g,b);
matrix.drawPixel(iy,ix,c);
}
else
if(cmd[0]==0x03){
int ix=cmd[1];
int iy=cmd[2];
int n=cmd[3];
int rn[n];
int gn[n];
int bn[n];
for(int i=0;i<n;i++){
rn[i]=cmd[i*3+4];
gn[i]=cmd[i*3+5];
bn[i]=cmd[i*3+6];
}
for(int i=0;i<n;i++){
int iyp=i%4;
int ixp=i/4;
int16_t c=matrix.Color(rn[i],gn[i],bn[i]);
matrix.drawPixel(iy+iyp,ix+ixp,c);
}
}
}
void requestEvent(){
Wire.write(status);
}
}}
終了行:
[[TeleportDresser]]
#code(C){{
// Adafruit_NeoMatrix example for single NeoPixel Shield.
// Scrolls 'Howdy' across the matrix in a portrait (verti...
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#ifndef PSTR
#define PSTR // Make Arduino Due happy
#endif
#include <Wire.h>
#define SLAVE_ADDRESS 0x30
int status = 0;
#define PIN 6
// MATRIX DECLARATION:
// Parameter 1 = width of NeoPixel matrix
// Parameter 2 = height of matrix
// Parameter 3 = pin number (most are valid)
// Parameter 4 = matrix layout flags, add together as nee...
// NEO_MATRIX_TOP, NEO_MATRIX_BOTTOM, NEO_MATRIX_LEFT, ...
// Position of the FIRST LED in the matrix; pick two,...
// NEO_MATRIX_TOP + NEO_MATRIX_LEFT for the top-left ...
// NEO_MATRIX_ROWS, NEO_MATRIX_COLUMNS: LEDs are arrang...
// rows or in vertical columns, respectively; pick on...
// NEO_MATRIX_PROGRESSIVE, NEO_MATRIX_ZIGZAG: all rows/...
// in the same order, or alternate lines reverse dire...
// See example below for these values in action.
// Parameter 5 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel product...
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pix...
// NEO_GRB Pixels are wired for GRB bitstream (most...
// NEO_GRBW Pixels are wired for GRBW bitstream (RGB...
// NEO_RGB Pixels are wired for RGB bitstream (v1 F...
// Example for NeoPixel Shield. In this application we'd...
// as a 5x8 tall matrix, with the USB port positioned at ...
// Arduino. When held that way, the first pixel is at th...
// lines are arranged in columns, progressive order. The...
// 800 KHz (v2) pixels that expect GRB color data.
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(4, 75, PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG,
NEO_GRB + NEO_KHZ800);
const int b0 = 2; // the number of the pushbutton pin
const int b1 = 3;
const int b2 = 4;
const int b3 = 5;
const uint16_t colors[] = {
matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matri...
void setup() {
matrix.begin();
// matrix.setTextWrap(false);
matrix.setBrightness(40);
// matrix.setTextColor(colors[0]);
pinMode(b0, INPUT_PULLUP);
pinMode(b1, INPUT_PULLUP);
pinMode(b2, INPUT_PULLUP);
pinMode(b3, INPUT_PULLUP);
int b0State = digitalRead(b0);
int b1State = digitalRead(b1);
int b2State = digitalRead(b2);
int b3State = digitalRead(b3);
int x=((b3State*2+b2State)*2+b1State)*2+b0State;
Serial.begin(115200);
// initialize i2c as slave
Wire.begin(SLAVE_ADDRESS+x);
Wire.setClock(400000); //400Khz i2c clock
// define callbacks for i2c communication
Wire.onReceive(receiveEvent);
Wire.onRequest(requestEvent);
}
int x = matrix.width();
int pass = 0;
void loop() {
delay(10);
}
char cmd[32];
// call back for receive data
void receiveEvent(int byteCount){
// command:
// clear... 0x00
// show ... 0x01
// set1 ix,iy,r,g,b
// ... 0x02 *,*, *,*,*
// setn ix,iy,n, r0,g0,b0, ..r(n-1),g(n-1),b(n-1) n<=8
// ... 0x03 *,*, *, *,*,*, ..., *,*,*
int i=0;
while(Wire.available()) {
cmd[i] = Wire.read();
i++;
}
int n=i;
/*
for(i=0;i<n;i++){
Serial.print(" "); Serial.print(cmd[i],HEX);
}
Serial.println(" ");
*/
if(cmd[0]==0x00){
matrix.fillScreen(0);
}
else
if(cmd[0]==0x01){
matrix.show();
delay(5);
}
else
if(cmd[0]==0x02){ //set1
// set1 ix,iy,r,g,b
// ... 0x02 *,*, *,*,*
int ix=cmd[1];
int iy=cmd[2];
int r=cmd[3];
int g=cmd[4];
int b=cmd[5];
int16_t c=matrix.Color(r,g,b);
matrix.drawPixel(iy,ix,c);
}
else
if(cmd[0]==0x03){
int ix=cmd[1];
int iy=cmd[2];
int n=cmd[3];
int rn[n];
int gn[n];
int bn[n];
for(int i=0;i<n;i++){
rn[i]=cmd[i*3+4];
gn[i]=cmd[i*3+5];
bn[i]=cmd[i*3+6];
}
for(int i=0;i<n;i++){
int iyp=i%4;
int ixp=i/4;
int16_t c=matrix.Color(rn[i],gn[i],bn[i]);
matrix.drawPixel(iy+iyp,ix+ixp,c);
}
}
}
void requestEvent(){
Wire.write(status);
}
}}
ページ名: