|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.11.2022, 23:08 | #1 |
Новичок
Джуниор
Регистрация: 11.11.2022
Сообщений: 2
|
Помогите разобраться в коде arduino
Объясните как поменять цифры, которые будут выводиться на матрицу 16x16
#include <FastLED.h>// подключаем библиотеку управления адресной лентой #define NUM_LEDS 256 // указываем количество светодиодов на ленте #define PIN 4 // указываем пин для подключения ленты CRGB leds[NUM_LEDS];// обявляем масив типа данных CRGB(тип данных описанный в библиотеке FastLED.h byte x_k=1,y_k=1,r_k=225,g_k=0,b_k=0; void setup() { Serial.begin(9600); // основные настройки для адресной ленты FastLED.addLeds <WS2812, PIN, GRB>(leds, NUM_LEDS);//.setCorrection(TypicalLEDStrip)- цветокорекция(невникаем) //WS2812-тип ленты //PIN- пин для подключения ленты //GRB- порядок цветов //leds- имя массива светодиодов //NUM_LEDS- размер массива FastLED.setBrightness(225);// изначальное значение яркости(далее в программе может быть изменено) } void loop() { cifri(10,10,225,0,0,2); cifri(7,10,225,0,0,1); cifri(4,10,225,0,0,3); /*XOY(10, 10, 0, 30, 225);// XOY(11, 10, 0, 30, 225);// XOY(12, 10, 0, 30, 225);// XOY(13, 10, 0, 30, 225);// XOY(13, 11, 0, 30, 225);// XOY(13, 12, 0, 30, 225);// XOY(13, 13, 0, 30, 225);//*/ } void XOY(byte x, byte y, byte r, byte g, byte b){ //n-номер зажигаемого светодиода int n=0;// обнуляем номер светодиода if(x>0&&x<17&&y>0&&y<17){//проверяем входят ли вписанные координаты в размеры поля(поле 16X16 светодиодов) иначе (смотри (*)) if((y-1)>0){//данный блок устанавливает координату по оси OY n+=15;// "заполняем" первую строку координатной оси if((y-2)>0){// если точка по имеет координату Y > 2 n+=16*(y-2);// "заполняем" все строчки ниже y-ковой по оси Y } } if((y%2)==0){//данны блок устанавливает координату по оси OX для четных строк(((y%2)==0)-сравнение остатка от деления на 2 с 0(== - должен равнятся)) n+=(17-x); } if((y%2)!=0){//данны блок устанавливает координату по оси OX для не четных строк(((y%2)!=0)-сравнение остатка от деления на 2 с 0(!= - не должен равнятся)) if(y==1){//если выставляем координату X на первой строчке n+=(x-1); } else{//если выставляем координату X на любой другой строчке n+=x; } } leds[n] = CRGB(r, g, b);// присваеваем n-ному элементу массива цвет из трёх порамитров FastLED.show();//отправляем в ленту изменённый массив } else{//(*) Serial.println("Точки не существует");//выводми сообшение о том что точка не входит в координатную область } } /* * void XOY(byte x, byte y, byte r, byte g, byte b)- функция для по координатам * byte x - координата по оси OX * byte y - координата по оси OY * byte r - интенсивность красного цвета * byte g - интенсивность зелёного цвета * byte b - интенсивность цвета * * Принцип работы функции основан на том ,что лента выложенна строчками и спаянна "змейкой". * Нулевой светодиод ленты находится в левом нижнем углу поля и имеет координату (1;1). * Для того чтобы поднятся на 1 по оси Y необходимо прибавить к номеру светодиода(n) количество оставшихся светодиодов в строке */ void cifri(byte k_X,byte k_Y,byte c_R,byte c_G,byte c_B,byte ciFra){ if(k_X>0&&k_X<15&&k_Y>2&&k_Y<15){ for(byte i=0;i<3;i++){ if(ciFra==1){ XOY((k_X+2),(k_Y+i),c_R,c_G,c_B); XOY((k_X+2),(k_Y-i),c_R,c_G,c_B); } if(ciFra==2){ XOY((k_X+i),k_Y,c_R,c_G,c_B); XOY(k_X,(k_Y-i),c_R,c_G,c_B); XOY((k_X+i),(k_Y-2),c_R,c_G,c_B); XOY((k_X+2),(k_Y+i),c_R,c_G,c_B); XOY((k_X+i),(k_Y+2),c_R,c_G,c_B); } if(ciFra==3){ XOY((k_X+i),k_Y,c_R,c_G,c_B); XOY((k_X+2),(k_Y-i),c_R,c_G,c_B); XOY((k_X+i),(k_Y-2),c_R,c_G,c_B); XOY((k_X+2),(k_Y+i),c_R,c_G,c_B); XOY((k_X+i),(k_Y+2),c_R,c_G,c_B); } if(ciFra==4){ XOY(k_X,(k_Y+i),c_R,c_G,c_B); XOY((k_X+i),k_Y,c_R,c_G,c_B); XOY((k_X+2),(k_Y+i),c_R,c_G,c_B); XOY((k_X+2),(k_Y-i),c_R,c_G,c_B); } if(ciFra==5){ XOY((k_X+i),k_Y,c_R,c_G,c_B); XOY(k_X,(k_Y+i),c_R,c_G,c_B); XOY((k_X+2),(k_Y-i),c_R,c_G,c_B); XOY((k_X+i),(k_Y-2),c_R,c_G,c_B); XOY((k_X+i),(k_Y+2),c_R,c_G,c_B); } if(ciFra==6){ XOY(k_X,(k_Y+i),c_R,c_G,c_B); XOY(k_X,(k_Y-i),c_R,c_G,c_B); XOY((k_X+i),k_Y,c_R,c_G,c_B); XOY((k_X+i),(k_Y+2),c_R,c_G,c_B); XOY((k_X+i),(k_Y-2),c_R,c_G,c_B); XOY((k_X+2),(k_Y-i),c_R,c_G,c_B); } if(ciFra==7){ XOY(k_X,(k_Y+i),c_R,c_G,c_B); XOY((k_X+i),k_Y,c_R,c_G,c_B); XOY((k_X+2),(k_Y+i),c_R,c_G,c_B); XOY((k_X+2),(k_Y-i),c_R,c_G,c_B); } if(ciFra==8){ XOY(k_X,(k_Y+i),c_R,c_G,c_B); XOY((k_X+i),k_Y,c_R,c_G,c_B); XOY((k_X+2),(k_Y+i),c_R,c_G,c_B); XOY((k_X+2),(k_Y-i),c_R,c_G,c_B); } if(ciFra==9){ XOY(k_X,(k_Y+i),c_R,c_G,c_B); XOY((k_X+i),k_Y,c_R,c_G,c_B); XOY((k_X+2),(k_Y+i),c_R,c_G,c_B); XOY((k_X+2),(k_Y-i),c_R,c_G,c_B); } if(ciFra==0){ XOY(k_X,(k_Y+i),c_R,c_G,c_B); XOY((k_X+i),k_Y,c_R,c_G,c_B); XOY((k_X+2),(k_Y+i),c_R,c_G,c_B); XOY((k_X+2),(k_Y-i),c_R,c_G,c_B); } } } } |
11.11.2022, 23:31 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
|
11.11.2022, 23:52 | #3 |
Новичок
Джуниор
Регистрация: 11.11.2022
Сообщений: 2
|
я уже часа 2 сижу, до меня дойти не может, подскажте пожалуйста как можно изменить
|
14.11.2022, 14:25 | #4 |
Форумчанин
Регистрация: 09.05.2017
Сообщений: 737
|
Тэги кода и отступы(форматирование) не надо делать в первом сообщении? Столько if-ов - может быть лучше switch применить?
|
15.11.2022, 11:08 | #5 |
Форумчанин
Регистрация: 09.05.2017
Сообщений: 737
|
Братаны, а как там код загружается? Допустим, я загрузил данные в 5 светодиодов, но только 24 бита, т.е. RGB-информацию. Какой загорится? Первый?
|
15.11.2022, 12:38 | #6 |
Форумчанин
Регистрация: 09.05.2017
Сообщений: 737
|
Автор темы, что непонятно, в комментариях все расписано.
|
15.11.2022, 12:51 | #7 |
Форумчанин
Регистрация: 09.05.2017
Сообщений: 737
|
Вот, как надо.
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите разобраться в коде | perekatipole | Общие вопросы Delphi | 14 | 23.04.2017 14:41 |
Помогите разобраться в коде... | dimwow | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 28.09.2016 08:43 |
Помогите разобраться в коде | fate | Общие вопросы по Java, Java SE, Kotlin | 5 | 17.03.2009 22:10 |