2016-12-12 16 views
1

Привет всем,Как отменить светодиодную матрицу в Arduino?

Во-первых, вы должны знать, что я еще новичок в кодировании, а также мой опыт является очень низким, только начал с привет мир сообщением :)

В основном я пытаюсь перевернуть водить матрица в Arduino, и я не знаю, как это сделать. Я преуспел в обратном направлении слева направо, но у меня возникли проблемы с переворачиванием до

Здесь он объясняет мне, как это сделать, но поскольку я новичок Я не знаю, с чего начать https://embed.gyazo.com/042da7e20a9a1773aad7d822ef2c08f3.png

Проект, который я пытаюсь улучшите это https://www.youtube.com/watch?v=X35HbE7k3DA

У меня было успешное переписывание кода обработки, после чего я сменил матрицу на 32 x 64, но теперь я застреваю в обратном направлении, не понимая, что делать дальше. На данный момент я читаю о том, как работает матрица во главе с adafruit, читая документацию об аппаратных библиотеках.

Любая помощь действительно оценена, спасибо заранее!

Вот код

/* 
    Arduino - Processing Real Time Spectrum Analyzer 
This program is intended output a FFT from a pc on a RGB matrix 
The program is based on the adafruit RGB matrix library: https://learn.adafruit.com/32x16-32x32-rgb-led-matrix/ 
The FFT results in the complimentary processing code handles 64 bands so the code calls for 2 panels, but can be modified for only one easily 
More information, including full parts list and videos of the final product can be seen on 12vtronix.com 
Youtube video sample: https://www.youtube.com/watch?v=X35HbE7k3DA 
      Created: 22nd Sep 2013 by Stephen Singh 
    Last Modified: 10th May 2014 by Stephen Singh 

    Variables with the <-O-> symbol indicates that it can be adjusted for the reason specified 
*/ 



#include <avr/pgmspace.h> 
#include <Adafruit_GFX.h> // Core graphics library 
#include <RGBmatrixPanel.h> // Hardware-specific library 

#define CLK 8 // MUST be on PORTB! 
#define LAT A3 
#define OE 9 
#define A A0 
#define B A1 
#define C A2 
// Last parameter = 'true' enables double-buffering, for flicker-free, 
// buttery smooth animation. Note that NOTHING WILL SHOW ON THE DISPLAY 
// until the first call to swapBuffers(). This is normal. 
RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, true); 



// <-O-> the values after "matrix.Color333" represent the RGB values with 7 being the brightest value for that particular colour 

void lightcolumns(int rownum, int amplitude) 
{ 
    if(amplitude>15) // <-O-> set the threshold for the band to turn red 
    { 
    for(int y = 0; y < amplitude; y++){ 
    matrix.drawPixel(rownum, y, matrix.Color333(7, 0, 0)); 
    } 
    for(int y = amplitude; y <16; y++) 
    { 
    matrix.drawPixel(rownum, y, matrix.Color333(0, 0, 0)); 
    } 
    } 

    else if(amplitude>13) // <-O-> set the threshold for the band to turn yellow 
    { 
    for(int y = 0; y < amplitude; y++){ 
    matrix.drawPixel(rownum, y, matrix.Color333(4, 4, 0)); 
    } 
    for(int y = amplitude; y < 16; y++) 
    { 
    matrix.drawPixel(rownum, y, matrix.Color333(0, 0, 0)); 
    } 
    } 

    else if(amplitude>9) // <-O-> set the threshold for the band to turn green 
    { 
    for(int y = 0; y < amplitude; y++){ 
    matrix.drawPixel(rownum, y, matrix.Color333(0, 5, 0)); 
    } 
    for(int y = amplitude; y < 16; y++) 
    { 
    matrix.drawPixel(rownum, y, matrix.Color333(0, 0, 0)); 
    } 
    } 

    else 
    { 
    for(int y = 0; y < amplitude; y++){ 
    matrix.drawPixel(rownum, y, matrix.Color333(0, 0, 7)); 
    } 
    for(int y = amplitude; y < 16; y++) 
    { 
    matrix.drawPixel(rownum, y, matrix.Color333(0, 0, 0)); 
    } 
    } 
} 


void setup() 
{ 
    matrix.begin(); 
    Serial.begin(115200); 
    delay(1000); 
} 





void loop() { 


if(Serial.read() == ('M')) 
{ 
    int led1 = Serial.parseInt();  
    int led2 = Serial.parseInt(); 
    int led3 = Serial.parseInt(); 
    int led4 = Serial.parseInt(); 
    int led5 = Serial.parseInt(); 
    int led6 = Serial.parseInt(); 
    int led7 = Serial.parseInt(); 
    int led8 = Serial.parseInt(); 
    int led9 = Serial.parseInt();  
    int led10 = Serial.parseInt(); 
    int led11 = Serial.parseInt(); 
    int led12 = Serial.parseInt(); 
    int led13 = Serial.parseInt(); 
    int led14 = Serial.parseInt(); 
    int led15 = Serial.parseInt(); 
    int led16 = Serial.parseInt(); 
    int led17 = Serial.parseInt();  
    int led18 = Serial.parseInt(); 
    int led19 = Serial.parseInt(); 
    int led20 = Serial.parseInt(); 
    int led21 = Serial.parseInt(); 
    int led22 = Serial.parseInt(); 
    int led23 = Serial.parseInt(); 
    int led24 = Serial.parseInt(); 
    int led25 = Serial.parseInt(); 
    int led26 = Serial.parseInt(); 
    int led27 = Serial.parseInt(); 
    int led28 = Serial.parseInt(); 
    int led29 = Serial.parseInt(); 
    int led30 = Serial.parseInt(); 
    int led31 = Serial.parseInt(); 
    int led32 = Serial.parseInt(); 

    if (Serial.read() == '\n') 
    {  
     lightcolumns(31, led1); 
     lightcolumns(30, led2); 
     lightcolumns(29, led3); 
     lightcolumns(28, led4); 
     lightcolumns(27, led5); 
     lightcolumns(26, led6); 
     lightcolumns(25, led7); 
     lightcolumns(24, led8); 
     lightcolumns(23, led9); 
     lightcolumns(22, led10); 
     lightcolumns(21, led11); 
     lightcolumns(20, led12); 
     lightcolumns(19, led13); 
     lightcolumns(18, led14); 
     lightcolumns(17, led15); 
     lightcolumns(16, led16); 
     lightcolumns(15, led17); 
     lightcolumns(14, led18); 
     lightcolumns(13, led19); 
     lightcolumns(12, led20); 
     lightcolumns(11, led21); 
     lightcolumns(10, led22); 
     lightcolumns(9, led23); 
     lightcolumns(8, led24); 
     lightcolumns(7, led25); 
     lightcolumns(6, led26); 
     lightcolumns(5, led27); 
     lightcolumns(4, led28); 
     lightcolumns(3, led29); 
     lightcolumns(2, led30); 
     lightcolumns(1, led31); 
     lightcolumns(0, led32); 

     matrix.swapBuffers(false); 
    } 
    } 
} 
+0

Я вижу, что функция 'loop' и не может не думать, что массив и пары' for' будут отрубать до шести строк кода. – user4581301

ответ

0

Где вы звоните matrix.drawPixel:

matrix.drawPixel(rownum, y, matrix.Color333(0, 0, 7)); 

заменителем y с 15 - y:

matrix.drawPixel(rownum, 15 - y, matrix.Color333(0, 0, 7)); 

Вы не можете просто поменять местами for петли которые действуют на y для подсчета вниз как y непосредственно по сравнению с amplitude.

 Смежные вопросы

  • Нет связанных вопросов^_^