адресная светодиодная лента
- Войдите на сайт для отправки комментариев
Втр, 20/10/2020 - 20:36
Здравствуйте, насмотревшись видео с youtube по проектам arduino и адресной светодиодной лентой, решил тоже поиграться. Раньше с arduino дело не имел. Идея проекта заключается в том, чтобы управлять лентой через bluetoth, хочу чтобы можно было ввести 3 числа и лента горела соответствующим цветом, но для меня пока даже это сложно. Решил проверить как данные приходят с телефона на arduino. Написал код, по задумке если я ввожу 255, то лента горит красным, а если нет, то розовым, однако она горит розовым чтобы я не вводил. Помогите пожалуйста, подскажите в чем ошибка.
// Подключаем библиотеку Adafruit NeoPixel. #include "Adafruit_NeoPixel.h" // Указываем, какое количество пикселей у нашей ленты. #define LED_COUNT 8 // Указываем, к какому порту подключен вход ленты DIN. #define LED_PIN 7 // Создаем переменную strip для управления нашей лентой. Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); //объявляю переменные int red = 0; int green = 0; int blue = 0; int color; void setup() { Serial.begin(9600); // Инициализируем ленту. strip.begin(); } void loop() { if (Serial.available()) { color = Serial.read(); if color (x == 255) { for (int i = 0; i < LED_COUNT; i++) { strip.setPixelColor(i, strip.Color(255, 0, 0)); // цвет. } } else { for (int i = 0; i < LED_COUNT; i++) { strip.setPixelColor(i, strip.Color(255, 0, 255)); // цвет. } } } strip.show(); delay(500); }
Забудьте о ленте на время, просто печатайте переменную x в Serial Monitor.
А, вообще, расскажите - что означает строка 35?
Она означает, что ТС обманул нас написав
она горит розовым чтобы я не вводил.
На самом деле там ничего не горит, т.к. код просто не компилируется.
Ну или у него проблема с одним кодом, а нам он показывает другой (очень разумно!)
ой, извините у меня там ошибка, он должна выглядеть так "if (color == 255)"
Оно компелируется, я заливаю прошивку, потом подключаюсь по блютуз, ввожу 255, после чего он горит розовым, хотя по идее должен гореть красным. Я не понимаю в чем загвоздка
Я не понимаю в чем загвоздка
Без кода передатчика сложно понять, но в общем проблема в том. что вы только думаете. что передаете 255.
На самом деле вы скорее всего передаете сначала '2' , потом '5'. а потом еще раз '5' . ни один из этих кодов не равен 255, поэтому лента и горит розовым
ой, извините у меня там ошибка
Привыкайте вставлять код копипастом прямо из IDE ничего не меняя. Если Вы поменяли что-то одно, то откуда у меня уверенность, что Вы не поменяли что-то ещё? В итоге час бьёшься, а человек тебе на голуюом глазу: "это не тот код, я тут поменял кое чего" - бесит неимоверно.
ну я ввожу 255 в строке ввода, а потом передаю на передатчик
извините, так и буду делать
ну я ввожу 255 в строке ввода, а потом передаю на передатчик
Вы не поняли, что Вам человек сказал? Код давайте. Что Вы там вводите, куда и как передаёте. Без кода здесь будет только флуд и глум.
Или \n в конце. Она мигнёт на наносекунды красным и снова ... :)
так вот он код
Я скачал блютуз терминал на телефон, и ввожу там 255
И по идее это должно присваеваться переменной color
Я скачал блютуз терминал на телефон, и ввожу там 255
И по идее это должно присваеваться переменной color
до вас не доходит, что я написал?
Когда вы вводите в терминале 255 - это не одно число 255, а три отдельных символа '2' '5' '5". Вы разницу между символами и числами понимаете?
Без контроля приема вы можете сколь угодно долго биться об стену. Выводите принимаемое значение в куда-нибудь и все узнаете про розовое.
да бесполезно....
Чтобы он смог что-то куда-то вывести - ему сначала надо отключить блютус от Сериала :) Ты ему замумукаешься обьяснять. что такое Софтовый сериал и как им пользоваться.
А как можно исправить?
Создать массив?
Я не знаю как это сделать, если бы вы объяснили, или ссылку на статью кинули...
А как можно исправить?
Создать массив?
и как вы собрались этот массив передавать?
Если на смартфоне нормальный терминал, то он ещё и отображает принимаемые данные, которые Ардуино может совать в Serial
ну он же записывает по одному символу, через цикл заносить их в массив
Я не знаю как это сделать, если бы вы объяснили, или ссылку на статью кинули...
Serega_los', когда отвечаете на сообшение - нажимайте цитировать или пишите в начале ник того, кому отвечаете
Я не знаю как это сделать, если бы вы объяснили, или ссылку на статью кинули...
Serega_los', когда отвечаете на сообшение - нажимайте цитировать или пишите в начале ник того, кому отвечаете
понял, принял
ТС внимательно перечитай ответы sadman41. Особенно посты 15 и 20.