Hello guys,
I am using a Arduino zero to run a 32*64 RGB matrix, also using and analog sensor to measure distance, also using 3 3.3v digital inputs.
I have the display running 24/7 non stop, but couple times a day I have to reset the Arduino because the screen goes black for some reason.
here is the coding since I can not upload files yet.
#include <RGBmatrixPanel.h>
#define CLK 8
#define OE 9
#define LAT 10
#define A A0
#define B A1
#define C A2
#define D A3
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, false, 64);
int buttonState1 = 0;
int lastButtonState1 = 0;
int buttonState2 = 0;
int lastButtonState2 = 0;
int buttonState3 = 0;
int lastButtonState3 = 0;
int i=0;
char val1=0;
char val2=0;
char val3=0;
int lastPor=0;
int str1[6];
void setup() {
//read digital inputs 11, 12, 13.
pinMode(11, INPUT_PULLDOWN);
pinMode(12, INPUT_PULLDOWN);
pinMode(13, INPUT_PULLDOWN);
Serial.begin(9600);
matrix.begin();
matrix.fillScreen(matrix.Color333(0, 0, 0));
// draw some text!
matrix.setTextSize(2); // size 1 == 8 pixels high
matrix.setTextWrap(false); // Don't wrap at end of line - will do ourselves
}
void loop() {
// read the input on analog pin 5:
//int a;//max sensor value 100%
int sensorValue = analogRead(A5);
//float voltage = ((sensorValue)/(309.9));
//int rem = (voltage*59651.6363)/1000;
//int inch = rem%12;
//int f = (voltage*4970.9696)/1000;
//int Por1= (sensorValue/1023.0)*100;
//********************************************
// a1=135.00; sensor value 100%
// b1=540.00; sensor value 0%
// x1=405.00; full diference between a and b
int Por=(1-((sensorValue-300.00)/240.00))*100;
//********************************************
//Serial.println(Por);
Serial.println(sensorValue);
int r;
int g;
int b;
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
buttonState1 = digitalRead(11);
buttonState2 = digitalRead(12);
buttonState3 = digitalRead(13);
//print first string 0,0,0,0,0,0
matrix.setCursor(6, 1);
matrix.setTextColor(matrix.Color333(0,7,0));
matrix.setTextSize(1);
matrix.setCursor(0, 1);
matrix.print(str1[0]);
matrix.setTextSize(2);
matrix.print(str1[1]);
matrix.print(str1[2]);
matrix.print(str1[3]);
matrix.print(str1[4]);
matrix.setTextColor(matrix.Color333(7,0,0));
matrix.print(str1[5]);
//matrix.setTextColor(matrix.Color333(0,7,0));
//matrix.print(str1[6]);
//matrix.print(str1[7]);
//matrix.print(str1[8]);
//matrix.print(str1[9]);
//if pin 11 reads high at least 3.0vdc
if(buttonState1==1){
//lastButtonState1==1;
matrix.setTextColor(matrix.Color333(0,0,0));
matrix.setTextSize(1);
matrix.setCursor(0, 1);
matrix.print(str1[0]);
matrix.setTextSize(2);
matrix.print(str1[1]);
matrix.print(str1[2]);
matrix.print(str1[3]);
matrix.print(str1[4]);
matrix.print(str1[5]);
//matrix.print(str1[6]);
//matrix.print(str1[7]);
//matrix.print(str1[8]);
//matrix.print(str1[9]);
//str1[9]=str1[8];
//str1[8]=str1[7];
//tr1[7]=str1[6];
//str1[6]=str1[5];
str1[5]=str1[4];
str1[4]=str1[3];
str1[3]=str1[2];
str1[2]=str1[1];
str1[1]=str1[0];
str1[0]=1;
matrix.setTextColor(matrix.Color333(0,7,0));
matrix.setTextSize(1);
matrix.setCursor(0, 1);
matrix.print(str1[0]);
matrix.setTextSize(2);
matrix.print(str1[1]);
matrix.print(str1[2]);
matrix.print(str1[3]);
matrix.print(str1[4]);
matrix.setTextColor(matrix.Color333(7,0,0));
matrix.print(str1[5]);
//matrix.setTextColor(matrix.Color333(0,7,0));
//matrix.print(str1[6]);
//matrix.print(str1[7]);
//matrix.print(str1[8]);
//matrix.print(str1[9]);
if (Por<50)
{
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(0,0,0));
matrix.print(lastPor);
matrix.print("%");
matrix.setTextSize(2);
g=(1-((49.00-Por)/49.00))*7.00;
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(7-g,g,0));
matrix.print(Por);
matrix.setTextColor(matrix.Color333(7-g,g,0));
matrix.print("%");
lastPor=Por;
}
if (Por>=50)
{
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(0,0,0));
matrix.print(lastPor);
matrix.print("%");
matrix.setTextSize(2);
b=(1-((100.00-Por)/50.00))*7.00;
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(0,7-b,b));
matrix.print(Por);
matrix.setTextColor(matrix.Color333(0,7-b,b));
matrix.print("%");
lastPor=Por;
}
delay(500);
//i=i+1;
lastButtonState1==0;
}
//if pin12 reads at least 3.0vdc
if(buttonState2==1){
//lastButtonState2==1;
matrix.setTextColor(matrix.Color333(0,0,0));
matrix.setTextSize(1);
matrix.setCursor(0, 1);
matrix.print(str1[0]);
matrix.setTextSize(2);
matrix.print(str1[1]);
matrix.print(str1[2]);
matrix.print(str1[3]);
matrix.print(str1[4]);
matrix.print(str1[5]);
//matrix.print(str1[6]);
//matrix.print(str1[7]);
//matrix.print(str1[8]);
//matrix.print(str1[9]);
//str1[9]=str1[8];
//str1[8]=str1[7];
//str1[7]=str1[6];
//str1[6]=str1[5];
str1[5]=str1[4];
str1[4]=str1[3];
str1[3]=str1[2];
str1[2]=str1[1];
str1[1]=str1[0];
str1[0]=2;
matrix.setTextColor(matrix.Color333(0,7,0));
matrix.setTextSize(1);
matrix.setCursor(0, 1);
matrix.print(str1[0]);
matrix.setTextSize(2);
matrix.print(str1[1]);
matrix.print(str1[2]);
matrix.print(str1[3]);
matrix.print(str1[4]);
matrix.setTextColor(matrix.Color333(7,0,0));
matrix.print(str1[5]);
//matrix.setTextColor(matrix.Color333(0,0,7));
//matrix.print(str1[6]);
//matrix.print(str1[7]);
//matrix.print(str1[8]);
//matrix.print(str1[9]);
if (Por<50)
{
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(0,0,0));
matrix.print(lastPor);
matrix.print("%");
matrix.setTextSize(2);
g=(1-((49.00-Por)/49.00))*7.00;
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(7-g,g,0));
matrix.print(Por);
matrix.setTextColor(matrix.Color333(7-g,g,0));
matrix.print("%");
lastPor=Por;
}
if (Por>=50)
{
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(0,0,0));
matrix.print(lastPor);
matrix.print("%");
matrix.setTextSize(2);
b=(1-((100.00-Por)/50.00))*7.00;
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(0,7-b,b));
matrix.print(Por);
matrix.setTextColor(matrix.Color333(0,7-b,b));
matrix.print("%");
lastPor=Por;
}
delay(500);
lastButtonState2==0;
}
//if pin13 reads high at least 3.0vdc
if(buttonState3==1){
//lastButtonState3==1;
matrix.setTextColor(matrix.Color333(0,0,0));
matrix.setTextSize(1);
matrix.setCursor(0, 1);
matrix.print(str1[0]);
matrix.setTextSize(2);
matrix.print(str1[1]);
matrix.print(str1[2]);
matrix.print(str1[3]);
matrix.print(str1[4]);
matrix.print(str1[5]);
//matrix.print(str1[6]);
//matrix.print(str1[7]);
//matrix.print(str1[8]);
//matrix.print(str1[9]);
//str1[9]=str1[8];
//str1[8]=str1[7];
//str1[7]=str1[6];
//str1[6]=str1[5];
str1[5]=str1[4];
str1[4]=str1[3];
str1[3]=str1[2];
str1[2]=str1[1];
str1[1]=str1[0];
str1[0]=3;
matrix.setTextColor(matrix.Color333(0,7,0));
matrix.setTextSize(1);
matrix.setCursor(0, 1);
matrix.print(str1[0]);
matrix.setTextSize(2);
matrix.print(str1[1]);
matrix.print(str1[2]);
matrix.print(str1[3]);
matrix.print(str1[4]);
matrix.setTextColor(matrix.Color333(7,0,0));
matrix.print(str1[5]);
//matrix.setTextColor(matrix.Color333(0,0,7));
//matrix.print(str1[6]);
//matrix.print(str1[7]);
//matrix.print(str1[8]);
//matrix.print(str1[9]);
if (Por<50)
{
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(0,0,0));
matrix.print(lastPor);
matrix.print("%");
matrix.setTextSize(2);
g=(1-((49.00-Por)/49.00))*7.00;
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(7-g,g,0));
matrix.print(Por);
matrix.setTextColor(matrix.Color333(7-g,g,0));
matrix.print("%");
lastPor=Por;
}
if (Por>=50)
{
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(0,0,0));
matrix.print(lastPor);
matrix.print("%");
matrix.setTextSize(2);
b=(1-((100.00-Por)/50.00))*7.00;
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(0,7-b,b));
matrix.print(Por);
matrix.setTextColor(matrix.Color333(0,7-b,b));
matrix.print("%");
lastPor=Por;
}
delay(500);
//i=i+1;
lastButtonState3==0;
}
//lastPor=Por;
//number color if it is higher or lower than 50%
if(Por!=lastPor){
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(0,0,0));
matrix.print(lastPor);
matrix.print("%");
//Serial.println(Por);
//Serial.println(lastPor);
if (Por<50)
{
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(0,0,0));
matrix.print(lastPor);
matrix.print("%");
matrix.setTextSize(2);
g=(1-((49.00-Por)/49.00))*7.00;
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(7-g,g,0));
matrix.print(Por);
matrix.setTextColor(matrix.Color333(7-g,g,0));
matrix.print("%");
lastPor=Por;
}
if (Por>=50)
{
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(0,0,0));
matrix.print(lastPor);
matrix.print("%");
matrix.setTextSize(2);
b=(1-((100.00-Por)/50.00))*7.00;
matrix.setCursor(10, 17);
matrix.setTextColor(matrix.Color333(0,7-b,b));
matrix.print(Por);
matrix.setTextColor(matrix.Color333(0,7-b,b));
matrix.print("%");
lastPor=Por;
}
}
delay(250);
//erase last % matrix print
//matrix.setTextSize(2);
}
any ideas is more than welcome, thanks.