Нужна помощь по адреске

Всем хелло) Вообще дело такое: как я понял на адреску нельзя вывести серый цвет (r = 40 g = 40 b = 40). Пробывал вывести - то розовый выдаёт то ещё какой. Я написал код на питоне, для определения цвета и вывода его в com порт. Ардуинка в своё же время парсит все данные и выводит на ленту. Сейчас возможности скинуть код нет, так как пишу с телефона. Мне нужно чтобы ардуинка сверяла есть ли серы цвет, Если есть то на ленте был черный. Если r g b равны друг другу и их значения меньше 255 (то есть если 34 34 34 то серый а если 255 255 255 то уже не серый а белый). Как мне это реализовать? Помогите пожалуйста.

Вообще-то для этого Ардуинки и ленты мало - нужен цветной фотодатчик.

Начни с формулировки задачи.

if(r == g  &&  g == b  &&  b < 255)
{
 то серый
}
else if(r == b  &&  b == g  &&  b == 255)
{
 то белый
}

А так?

Осталось написать третью ветку с b > 255.

Такого в поставленной задаче не нашёл

Если речь про тип байт, то шутку понял)))


if(r == g && g == b)
 {
 if(b < 255)
  то серый
  то белый 
 }

Теперь забыл ветку else.

Французский математик (не помню фамилию) сформулировал общий алгоритм решения любой задачи, состоящий из четырех этапов:

  1. Понять задачу.
  2. Составить план решения.
  3. Выполнить план.
  4. Проанализировать результаты.

Так вот, меня всегда поражали люди, пытающиеся решить задачу, начиная сразу с третьего этапа.

1 лайк

Светодиод - это источник света. Вот про что, а про серый свет я никогда не слышал ))

:laughing: это точно)

Я кок раз и не хочу что фотодатчики висели на мониторе через шлейфы. После видео Гувера на эту тему так и вообще не очень будет + если красиво то крепления к датчикам ( у меня не 3D принтера)

Попробую

К этому постараюсь сам else добавить)

#define TFT_GREY 0x5AEB // New colour

Тут еще какое дело - смотреть на цвет прямо на светодиоде бессмысленно, цвета должны смешаться. А для этого их нужно спроецировать на белый матовый рассеиватель. И сам рассеиватель при этом желательно держать на некотором удалении от светодиода. Иначе глаз по любому будет видеть три источника света, а уж какой из них он будет воспринимать сильнее - вопрос скорее к устройству глаза и обрабатывающего центра в мозгу, чем к светодиоду

Какой рассеиватель посоветуете? А то я не шарю

Самый простой вариант - лист белой бумаго

Вот, когда будет, тогда и приходите - поговорим. Куда торопитесь?

А мы-то чем провинились? Пишите с пылесоса, если с телефона не можете, но код вставляйте нормально.

Не чем, просто предупредил)

Спасибо

Ну и как вы думаете: Новая проблема. Первый светодиод начало колбасить. Выдаёт ерунду какуюта. Вот код:

import pyautogui as pg
from time import sleep
import serial

port = "COM7"
baudrate = 9600

ser = serial.Serial(port, baudrate=baudrate)

def serialSend(data):
    txs = ""
    for val in data:
        txs += str(val)
        txs += ','
    txs = txs[:-1]
    txs += ';'
    txs.replace('(', '')
    txs.replace(')', '')
    txs.replace(' ', '')
    ser.write(txs.encode())

while 1:
    shot = pg.screenshot()
    sleep(0.2)
    val = shot.getpixel((2520, 939))
    serialSend([0, val])
    val1 = shot.getpixel((2445, 939))
    serialSend([1, val1])
    val2 = shot.getpixel((2370, 939))
    serialSend([2, val2])

Вот на питоне (пока что только 2 светодиода)

//----------------------НАСТРОЙКИ-----------------------
#define LED_PIN 13            // пин, к которому подключена лента
#define LED_NUM 118          // число светодиодов в ленте
//----------------------НАСТРОЙКИ-----------------------

#include <GParser.h>
#include "FastLED.h"

CRGB leds[LED_NUM];

void setup() {
Serial.begin(9600);

FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, LED_NUM);
FastLED.setBrightness(50);

}

void loop() {

  if (Serial.available()) {
    char buf[20];
    Serial.readBytesUntil(';', buf, 20);
    GParser data(buf, ',');
    int ints[5];
    data.parseInts(ints);
      if(ints[1] == ints[2] && ints[2] == ints[3] && ints[3] < 255)
      {
       leds[ints[0]].setRGB(0, 0, 0);
      }
      else if(ints[1] == ints[3] && ints[3] == ints[2] && ints[3] == 255)
      {
        leds[ints[0]].setRGB(ints[1], ints[2], ints[3]);
      }else{
        leds[ints[0]].setRGB(ints[1], ints[2], ints[3]);
      }
      
  }
  FastLED.show();
}  

на ардуинке