RGB лента, установка яркости зеленого и синего цветов

Лазаренко

✩✩✩✩✩✩✩
10 Янв 2021
66
1
Москва
Использую библиотеку https://github.com/GyverLibs/GRGB

Пробую так
C++:
  led.setRGB(255, 255, 255, 100);
  delay(1000);
  led.setRGB(255, 255, 255, 150);
  delay(1000);
  led.setRGB(255, 255, 255, 200);
  delay(1000);
  led.setRGB(255, 255, 255, 255);
  delay(1000);
и смотрю мультиметром какой вольтаж на пинах, на красном норм меняется вольтаж (от 1.8 и с каждой итерацией растет), на синем и зеленом вольтаж появляется только когда яркость 200 и выше и то вольтаж 4.8 (т.е. как для 100% яркости). Если попробовать установить общую яркость, например
led.setBrightness(190);
получаем на G, B ~= 4.8v на R ~= 2,7v (что корректно).

Че за хрень, это библиотека такая?
 
Изменено:

Сотнег

★★★★★★★
15 Янв 2020
4,268
1,470
@Лазаренко,
как у вас на красном с каждой итерацией растёт,
если красный только в первой строчке есть?
В остальных строчках красный по нулям.
 

IamNikolay

★★★✩✩✩✩
15 Янв 2020
820
175
@Лазаренко, не все пины ардуино поддерживают шим, да и использовать библиотеку для такой простой задачи - расточительство!
 

xof

★✩✩✩✩✩✩
24 Окт 2020
123
44
А библиотека не по ШИМ говорит?
В какие пины подключены ноги?
 

Лазаренко

✩✩✩✩✩✩✩
10 Янв 2021
66
1
Москва
блин, я не понимаю че за невезение такое, как блин оно работает.
Для эксперимента запустил этот скеч на мекетной плате
C++:
#define RED_PIN A4
#define GREEN_PIN A5
#define BLUE_PIN A6
#define BAUDRATE 9600

void setup() {
  Serial.begin(BAUDRATE);
//  pinMode(RED_PIN, OUTPUT);
//  pinMode(GREEN_PIN, OUTPUT);
//  pinMode(BLUE_PIN, OUTPUT);
}

void loop() {

  RGB_color(255, 255, 0);
  Serial.print("красный - ");
  Serial.println(map(analogRead(RED_PIN), 0, 1023, 0, 255));
  Serial.print("зеленый - ");
  Serial.println(map(analogRead(GREEN_PIN), 0, 1023, 0, 255));
  Serial.print("синий - ");
  Serial.println(map(analogRead(BLUE_PIN), 0, 1023, 0, 255));

  delay(1000);
}


void RGB_color(int red_value, int green_value, int blue_value) {
  analogWrite(RED_PIN, int(red_value * 0.5));
  analogWrite(GREEN_PIN, int(green_value * 0.5));
  analogWrite(BLUE_PIN, int(blue_value * 0.5));
}
беру половину что б не на всю яркость горело

вывод значений в консоли какой-то странный
1644151479377.png

синий я не передаю значения, но оно есть, а куда передаю там нет, на вольтметре тоже самое, на синем пине есть +- вольт, на красном и зеленом нет. Да еще не понятно че за значение, разве я не должен получить тоже что подал на пин?

Если же из RGB_color убрать "* 0.5" получаем на красном и зеленом 255, а синий так же скачет, даже если на него подать 255 то так же скачет от 40 до 190 +-

или 6й пин нельзя использовать?

да, сдвинул на 1 пины A3 A4 A5, глюков таких перестало быть, но все равно когда подаю значение 127 например в консоли и на вольтметре 0, а когда 200, то в консоли 255, чет ерунда какая-то
 

bort707

★★★★★★✩
21 Сен 2020
3,019
901
@Лазаренко, вы бы хоть какую-то книжку почитали бы! Вы опять все перепутали! Вам нужны ШИМ пины, а вы подключаете к аналоговым. Ни один из пинов Ах не подходит для вашей задачи
 

Лазаренко

✩✩✩✩✩✩✩
10 Янв 2021
66
1
Москва
Избыточное цитирование
короч перепаял опять на цифровые с поддержкой шим и сейчас через библиотеку работает как хотел

@Лазаренко, вы бы хоть какую-то книжку почитали бы! Вы опять все перепутали! Вам нужны ШИМ пины, а вы подключаете к аналоговым. Ни один из пинов Ах не подходит для вашей задачи
дак выше ж вон писали, что вообще нужно к аналоговым, я и стал к ним делать, что такое шим я знаю

но все равно я так и не понял почему аналоговые себя так странно вели
 

bort707

★★★★★★✩
21 Сен 2020
3,019
901
что такое шим я знаю
знали бы, подключили бы сами. А так видно, что знания на нуле - подключили к аналоговым и удивляетесь, что не работает.
Вместо того чтоб спорить - идите и проштудируйте учебник.
 

IamNikolay

★★★✩✩✩✩
15 Янв 2020
820
175
@Лазаренко, Я же писал что не все пины поддерживают шим. После этого надо было посмотреть какие поддерживают и к ним подключать, вот и все. Сохраните себе эту картинку и пользуйтесь.
1644165286719.png
 
  • Лойс +1
Реакции: Лазаренко