Добрый вечер. Хочу помочь человеку, может кто сможет решить третий вариант, нечетный. Буду очень благодарен.
Ну и? Где ваши «потуги» в решении вопроса?
Решение то простое - массив булевых значений по количеству кнопок, в него сохраняешь значения при нажатии кнопок. Вычитывая из него значения - формируешь «мощность». Переключение значений в массиве простым «отрицанием» (знак «!»). Ну а индикация вообще элементарная: все светодиоды на один порт (например, D (но это я «от балды» сейчас порт назвал), и просто в него значение мощности «загоняем»).
ЗЫ: Какой курс? ))
Не стыкуется. Ты хочешь, чтоб за тебя помогли ленивой ..опе. Готов заплатить тыщ 5?
Тысячу готов, а вот тысяч пять нет.)
Так это 10 класс, человеку задали, а она не бум бум в этом, вот решился помочь ей, надеюсь тут есть. кто смог бы выручить то.)
Никогда не задают то, чего не проходили/разбирали. Не ту школу выбрала твоя подопечная, пусь в обычную переходит пока не поздно
А ей это не нужно, в то место куда она поступать пойдет. Поэтому вот решил помочь с этим всем. Неужели помочь сложно то? Просто реально человек хороший, не хочу подводить ее, а то потом очень стыдно будет.)
#define A 2 // Пин первой кнопки
#define B 3 // Пин второй кнопки
#define C 4 // Пин третьей кнопки
#define M 9 // Пин управления мотором (PWM)
unsigned long t1=0,t2=0,t3=0,d=50; // Время антидребезга для трех кнопок и задержка
byte s[]={0,0,0}, l[]={1,1,1}; // s - состояния кнопок (0=неактивна,1=активна), l - предыдущие состояния
int p=0; // Текущая мощность мотора
byte r(byte x){return digitalRead(x);} // Функция чтения цифрового пина
void w(byte x,byte y){analogWrite(x,y);} // Функция записи PWM значения
// Функция обработки кнопки с антидребезгом
void n(byte i,byte pin,byte* st,byte* lt,unsigned long* tm){
byte v=r(pin); // Чтение текущего значения кнопки
if(v!=lt[i]){ // Если состояние изменилось
tm[i]=millis(); // Сброс таймера антидребезга
}
if((millis()-tm[i])>d){ // Если прошло время антидребезга
if(v!=st[i]){ // Если состояние стабилизировалось
if(v==0){ // Если кнопка нажата (0, т.к. INPUT_PULLUP)
st[i]=1-st[i]; // Переключение состояния (0→1 или 1→0)
}
}
}
lt[i]=v; // Сохранение текущего состояния как предыдущего
}
void setup(){
for(byte i=0;i<3;i++){ // Настройка пинов кнопок
pinMode(A+i,0x2); // 0x2 = INPUT_PULLUP (внутренняя подтяжка)
}
pinMode(M,1); // 1 = OUTPUT (выход для мотора)
w(M,0); // Изначально мотор выключен
Serial.begin(9600); // Инициализация Serial для отладки
}
// Функция подсчета активных кнопок
byte f(byte a,byte b,byte c){
byte k=0; // Счетчик активных кнопок
if(a)k++; // Если первая кнопка активна
if(b)k++; // Если вторая кнопка активна
if(c)k++; // Если третья кнопка активна
return k; // Возврат количества активных кнопок
}
// Функция преобразования количества кнопок в мощность мотора
byte z(byte k){
switch(k){ // В зависимости от количества активных кнопок
case 1:return 0x40; // 1 кнопка = 25% (64/256 = 0.25)
case 2:return 0x80; // 2 кнопки = 50% (128/256 = 0.5)
case 3:return 0xBF; // 3 кнопки = 75% (191/256 ≈ 0.75)
default:return 0; // 0 кнопок = 0% (мотор выключен)
}
}
void loop(){
for(byte i=0;i<3;i++){ // Обработка всех трех кнопок
n(i,A+i,s,l,&t1); // Вызов функции обработки для каждой кнопки
}
p=z(f(s[0],s[1],s[2])); // Расчет мощности мотора
w(M,p); // Установка мощности мотора
// Вывод отладочной информации в Serial
Serial.print(s[0]); // Состояние первой кнопки
Serial.print(" ");
Serial.print(s[1]); // Состояние второй кнопки
Serial.print(" ");
Serial.print(s[2]); // Состояние третьей кнопки
Serial.print(" | ");
Serial.print(f(s[0],s[1],s[2])); // Количество активных кнопок
Serial.print(" | ");
Serial.println(p); // Текущая мощность мотора
delay(10); // Короткая задержка для стабильности
}
если вариантов не будет попробуйте это, не факт что рабочий, но тот кто будет проверять все равно там нечего не поймет))) не забудьте убрать комментарии))
p.s. если помогло косарь DetSimen в личке узнайте реквизиты
Спасибо большое, есть добрые люди на свете.)
Никогда не обещай того, что САМ сделать не сможешь.
Двойка обеспечена ))
Не было бы нужно, не задавали бы.
То, что Вы хотите, это не помощь, а жульничество.
ТС
Назвался программистом, присунул несовершеннолетней, а теперь хочет за косарь отскочить ???
Давайте заведём специальный раздел “Богадельня для ленивых задниц” и назначит туда главными @BABOS и @ua6em – они любители таких дел.
“Мощность вращения” - это сильно! Это какой-то корявый перевод с иностранного или что? И где такие задания раздают?
![]()
Ну, ну. Интересно, что за школьная дисциплина такая, с такими заданиями? Или это не из массовой школы?
ИИ надо начинать использовать ![]()
Поддерживаю.
Када ЕИ нет, ИИ не поможет.
Наобещал с три короба? Чтобы твоя подопечная получила пятерку, придется расcтаться с пятеркой :).
Это просто автор стесняется, выдумал персонажа :). Не бывает таких школ. Не изучают в 10м класе ардуину.


