Помогите решить школьную задачку

Добрый вечер. Хочу помочь человеку, может кто сможет решить третий вариант, нечетный. Буду очень благодарен.

Ну и? Где ваши «потуги» в решении вопроса?
Решение то простое - массив булевых значений по количеству кнопок, в него сохраняешь значения при нажатии кнопок. Вычитывая из него значения - формируешь «мощность». Переключение значений в массиве простым «отрицанием» (знак «!»). Ну а индикация вообще элементарная: все светодиоды на один порт (например, D (но это я «от балды» сейчас порт назвал), и просто в него значение мощности «загоняем»).

ЗЫ: Какой курс? ))

Не стыкуется. Ты хочешь, чтоб за тебя помогли ленивой ..опе. Готов заплатить тыщ 5?

Тысячу готов, а вот тысяч пять нет.)

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

Никогда не задают то, чего не проходили/разбирали. Не ту школу выбрала твоя подопечная, пусь в обычную переходит пока не поздно

2 лайка

А ей это не нужно, в то место куда она поступать пойдет. Поэтому вот решил помочь с этим всем. Неужели помочь сложно то? Просто реально человек хороший, не хочу подводить ее, а то потом очень стыдно будет.)

#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 в личке узнайте реквизиты

2 лайка

Спасибо большое, есть добрые люди на свете.)

Никогда не обещай того, что САМ сделать не сможешь.

4 лайка

Двойка обеспечена ))

Не было бы нужно, не задавали бы.

То, что Вы хотите, это не помощь, а жульничество.

3 лайка

ТС

Назвался программистом, присунул несовершеннолетней, а теперь хочет за косарь отскочить ???

Давайте заведём специальный раздел “Богадельня для ленивых задниц” и назначит туда главными @BABOS и @ua6em – они любители таких дел.

6 лайков

“Мощность вращения” - это сильно! Это какой-то корявый перевод с иностранного или что? И где такие задания раздают?

1 лайк

:slight_smile:

Ну, ну. Интересно, что за школьная дисциплина такая, с такими заданиями? Или это не из массовой школы?

ИИ надо начинать использовать :slight_smile:

Поддерживаю.

Када ЕИ нет, ИИ не поможет.

2 лайка

Наобещал с три короба? Чтобы твоя подопечная получила пятерку, придется расcтаться с пятеркой :).

Это просто автор стесняется, выдумал персонажа :). Не бывает таких школ. Не изучают в 10м класе ардуину.