Ви не увійшли.
Друзья, большое спасибо вам всем за помощь, но этот проект для меня еще слишком сложен и я от него отказался, хотя получил от вас очень ценные советы, поэтому огромное спасибо.
Я взял не большой проект тестера батареек, и у меня по нему есть вопросы я создам соответствующую тему и если бы вы могли мне помогти, то был бы очень благодареен.
Еще раз всем вам спасибо за то что откликнулись, к данному проекту я вернусь, но немного позже, когда наберусь опыту.
Так я ему и посоветовал - заменить еще и 13-й пин на другой и добавить резисторы на землю. Да и в самом коде явно есть неточности (проверил ради интереса в Протеусе, кнопки работают, только светодиоды переключаются не так как задумано). Вот только ТС здесь не видать. Может ему уже и не надо помогать ...
Если "ну так было задумано разработчиком!", что одна и та же кнопка (переключатель) и коммутирует питание и подаёт сигнал на порт, тогда, конечно, ты прав.
А вообще, тема открыта не для того, чтобы мы с тобой спорили. Можешь что-то посоветовать топикстартеру - советуй. Не можешь - иди в другую тему.
Режим порта INPUT_PULLUP и существует для того, чтобы избавиться от внешних резисторов. Именно поэтому кнопки следует соединять с общим проводом, а не с питанием.
Да ну! Это кто ж такое сказал? А если кнопка (переключатель) должна по схеме (ну так было задумано разработчиком!) коммутировать питание, а не землю? Тогда прикажешь еще и схему инвертора сигналов собирать?
Режим порта INPUT_PULLUP и существует для того, чтобы избавиться от внешних резисторов. Именно поэтому кнопки следует соединять с общим проводом, а не с питанием.
Естественно, код проверки нажатия следует изменить.
Второй косяк: Порт, на который вешается кнопка, должен быть подтянут к питанию (INPUT_PULLUP) и нажатая кнопка должна замыкать его с общим проводом. Именно из-за этого диоды "живут своей хаотичной жизнью"
А ты вообще-то код смотрел? В нем кнопки замыкаются на плюс и поэтому никакого INPUT_pullup не надо. Там нужно добавить резисторы на землю. С 0 и 1 пином согласен, добавлю еще что и 13 тоже использовать как вход не желательно
Первый косяк: порты 0 и 1 в первых программах (а лучше и во всех остальных) использовать нельзя!!!
Второй косяк: Порт, на который вешается кнопка, должен быть подтянут к питанию (INPUT_PULLUP) и нажатая кнопка должна замыкать его с общим проводом. Именно из-за этого диоды "живут своей хаотичной жизнью"
форум это не обязаловка))))
захочет кто то - поможет, а не захочет - значит нет.
но вы, если ищите помощь, должны предоставить все материалы - тогда появляется шанс на отклик.
Я не хочу бан, я хочу что бы мне помогли. Все темы подходят к описанной мною проблеме.
Я могу залить материалы, я просто первый раз обращаюсь на форум и не знал откликнется ли кто то вообще. Я готов залить материалы. Вы готовы помочь?
если хотите помощи, то здесь показывайте схемы и ваши программы.
тогда шанс есть.
никто не будет искать учебник Бокселла и рыться в нём для того, чтобы кому то помочь.
и нафига создавать столько одинаковых тем.....
хотите бан))))
/*Вначале мы определим назначение контактов для светодиодов и кнопок*/
#define westButton 3
#define eastButton 13
#define westRed 2
#define westYellow 1
#define westGreen 0
#define eastRed 12
#define eastYellow 11
#define eastGreen 10
#define yellowBlinkTime 500 // периодмигания желтого света 0.5 секунды
boolean trafficWest = true; // запад = true, восток = false
int flowTime = 10000; // период ожидания что бы пропустить автомобили уже находящиеся на мосту
int changeDelay = 2000; // задержка перед сменой цвета
// далее, настроим цифровые входы\выходы
void setup()
{
pinMode(westButton, INPUT);
pinMode(eastButton, INPUT);
pinMode(westRed, OUTPUT);
pinMode(westYellow, OUTPUT);
pinMode(westGreen, OUTPUT);
pinMode(eastRed, OUTPUT);
pinMode(eastYellow, OUTPUT);
pinMode(eastGreen, OUTPUT);
// определим начальное состояние светодиодов - зеленый на западной стороне
digitalWrite(westRed, LOW);
digitalWrite(westYellow, LOW);
digitalWrite(westGreen, HIGH);
digitalWrite(eastRed, HIGH);
digitalWrite(eastYellow, LOW);
digitalWrite(eastGreen, LOW);
}
void loop()
{
// запрошено движение с запада на восток?
if(digitalRead(westButton) == HIGH)//продолжать только если движение меняется на противоположное
{
if(trafficWest != true )
{
trafficWest = true; // изменить флаг направления запад-восток
delay(flowTime); // дать автомобилям время пересеч мост
digitalWrite(eastGreen, LOW); // на восточной стороне погасить
digitalWrite(eastYellow, HIGH); // зеленый сигнал, зажеч желтый
delay(changeDelay); // и затем красный
digitalWrite(eastYellow, LOW);
digitalWrite(eastRed, HIGH);
delay(changeDelay);
for(int a = 0; a < 5; a ++)// воспроизвести мигающий желтый
{digitalWrite(westYellow, LOW);
delay(yellowBlinkTime);
digitalWrite(westYellow,HIGH);
delay(yellowBlinkTime);}
digitalWrite(westYellow, LOW);
digitalWrite(westRed, LOW); //сменить сигнал на западной стороне с красного
digitalWrite(westGreen, HIGH); // на зеленый
}
}
// запрошено движение с запада на восток?
if(digitalRead(eastButton) == HIGH)// продолжать только если двиение меняется на противоположное
{
if(trafficWest == true)
{
trafficWest = false;// изменить флаг направления восток - запад
delay(flowTime); //дать автомобилям время пересеч мост
digitalWrite(westGreen, LOW);
// на восточной стороне сменить зеленый сигнал на желтый и затем на красный
digitalWrite(westYellow, HIGH);
delay(changeDelay);
digitalWrite(westYellow, LOW);
digitalWrite(westRed, HIGH);
delay(changeDelay);
for(int a = 0; a <5; a ++) // воспроизвести мигающий желтый
{digitalWrite(westYellow, LOW);
delay(yellowBlinkTime);
digitalWrite(westYellow,HIGH);
delay(yellowBlinkTime);}
digitalWrite(westYellow, LOW);
digitalWrite(westRed, LOW); //сменить сигнал на восточной стороне с красного
digitalWrite(westGreen, HIGH); // на зеленый
}
}
}
По учебнику Бокселла собираю проект №5 - Управление Движением. Проект не работает. Отзовитесь кто нибудь, кто может помочь разобраться почему у меня ничего не работает, я замучился. Не могу найти в чем ошибка или проблема. Видео и фото не могу залить, пришлите почту, я туда отправлю файлы.
Наша цель — установить трехцветные светофоры на обоих концах моста. Светофоры должны разрешать движение по мосту только в одном направлении в каждый конкретный момент времени. Когда датчики на одном конце моста обнаруживают автомобиль, ожидающий включения зеленого сигнала, светофоры должны переключиться и разрешить движение. Алгоритм Для имитации датчиков обнаружения автомобилей на обоих концах моста мы используем две кнопки. Светофор с каждой стороны будет состоять из светодиодов красного, желтого и зеленого цвета. Первоначально система разрешает движение с запада на восток, поэтому на светофоре, обращенном на запад, должен гореть зеленый свет, а на светофоре, обращенном на восток, — красный. Когда к мосту приближается автомобиль (моделируется нажатием кнопки) и на светофоре горит красный свет, система должна переключить свет на противоположном конце с зеленого на желтый, а затем на красный. После этого она должна выждать некоторое время, чтобы позволить автомобилям, уже находящимся на мосту, завершить его пересечение. Далее, на стороне с ожидающим автомобилем должен включиться желтый мигающий свет, означающий «приготовиться к движению», и затем желтый свет должен смениться зеленым. Зеленый свет должен гореть, пока на противоположной стороне не появится автомобиль, после чего процесс должен повториться в обратном направлении.
Я собрал соответствующую схему, залил вышепреведенний код.
У меня пока что первый вопрос: почему огни светафора не реагируют на кнопку и живут своей жизнью - мигают как хотят и когда хотят? почему я определяю пин 2 и пин 1 , имеют значение LOW, а на плате они тупо светяться?
Я не могу найти проблему ? это сама ардуино, это плата , это код? где я накосячил? что я упустил? с чего начать поиски проблемы?