Вот тут уже сложнее. Каждую команду и каждое выражение пересматриваю по несколько раз, чтоб догнать о чем речь идет. Но пока мой мозг хоть с трудом, но справляется. Спасибо большое за уроки. может когдато научусь ардуинить)))
Использовать boolean (bool) лучше со значениями true и false C++ приравнивает ноль к false а любое число к true К примеру: bool x = 2; if (x == 1) then { Serial.println("истина"); } else { Serial.println("ложь"); } // В порт выведется слово истина, хотя присваивали двойку Еще стоило указать возможность использования одновременно нескольких условий switch оператора: switch (val) { case 1: case 2: Serial.println("1 или 2"); break; case 3: Serial.println("3"); break; }
Случайно давным-давно попал на основной канал, так - посматривал. Зашёл сегодня сюда - и вот он, далёкий 88 год, компьютер Электроника не помню какой и почти Basic в пояснениях ))) Славное дело делаете, Алексей! Успехов вам!
Таймкод 3:35 что нужно сделать, чтобы при повторном вводе 1 или 5, в порте не отображалась повторно надпись "Вы ввели 1 или 5" ? Чтобы внезависимости от того чтобы ты не нажимал, высвечивались по очереди фразы верно/мимо ?
Посмотрев несколько видео я понял что этот язык очень похож на java, я давно хотел изучить программирование на arduino и теперь я думаю мне будет легче освоить, так как я учу java и много чего уже знаю, очень жаль что вы не делаете уроки по программированию на java так как вы все расставляете по полочкам и все очень понятно, я для себя не могу найти понятных уроков для java, по этому я скачиваю библиотеки, проекты и пытаюсь разобраться как это работает но если что то совсем не понятно или нужно освоить какие то функции просто ищу в интернете, для меня это удобно по тому что я от начала и до конца изучаю код и запоминаю а так же добавляю какие то свои функции.
для новичка в програмировании осень сложно в книге изучаем ардуино: инстременты и методы технического волшебства всё также подробно но легче усваивается
Спасибо Алекс. Учусь можно сказать на твоих уроках) Больше похоже на твою дипломную конечно. Хотелось бы углубленный курс, за вменяемый прайс) Удобней конспектировать по роликам в тюб, чем из книг, аля с кул преподом, ЛОЛ=)))
if(serial.available()) { val = serial.parseInt() list = [1,2,3] if (list.includes(val)){ Serial.println("Вы ввели ${val}") } else { Serial.println("Мимо")} } Правильнее будет писать так и работать это будет быстрее, не серчай если тут есть ошибки, привёл грубый пример на JS , но концепция я думаю понятна
Через if или switch всегда приходят два ответа. Если верное значение, пишет его и то что в default, если попадает значение в default, то он два раза прихоит. Куда копать?
int val; void setup() { Serial.begin(9600); } void loop() { if ( Serial.available() ) { val = Serial.parseInt(); Serial.println(val); } } Ввожу в COM порте значение переменной. Значение отображается, затем в следующей строке появляется ноль. Почему ?
Привет! Проблема появления 0 связанна с добавлением символа переноса строки в ввод COM порта, чтобы убрать этот символ можно добавить проверку в код: while (Serial.available() && (Serial.read() != ' ')) {} Либо же выставить "Нет конца строки" в настройках ввода.
Здравствуйте ! Я обучаюсь по вашим видео, очень крутой контент . Спасибо тебе землянин ) ! Подскажите, операторами if, else , else if возможно построить меню или только switch подходит ?
Какая операция обрабатывается быстрее if или switch ? У меня в коде переменная А равна число от 0 до 9, и в зависимости от переменной выполняется определенная операция. Выполнено с оператором if и else if. Так как код выполняет динамическую индикацию на семисегментром дисплее, мне интересен, если использовать структуру switch/case, получится увеличить скорость динамической индикации или нет?
А как сделать так, чтобы после первого ответа "вы написали 2" (к примеру) ты о5 пишешь 2 и он отвечает уже другое, ну что-то вроде "вы опять ввели 2" ??
почему у меня после ввода числа и его вывода выводится еще один ноль? Делал все по примеру c предыдущего урока. То же самое и с выводом "вы ввели..." или "Мимо " выводится еще лишний раз "Мимо"
Такой вопрос, как соединить 2 скетча? Один на то, чтобы включать светодиод и после выключать. Другой - мигание светодиода путём автоматического включения и выключения быз кнопки. В общем, чтобы через кнопку включать мигание, а после выключить? Премного благодарен.
подскажите пожалуйста! такая проблема при работе с портом, он считает энтер за число, поэтому при вводе например 1 или 5, мне выдает: "вы ввели 5" потом на другой строке сразу же "мимо"
У меня вопрос, в видео есть строчка. val = Serial.parseint(); это как я понимаю объявление переменной, в уроке она так и работает но у меня пишет ошибку если я не установлю тип данных Пример : int val = Serial.parseint(); почему так? И еще у меня в Com порте сразу после вывода ответа появляется в следующей строке появляеться надпись мимо даже если я указываю значение в нужном диапазоне. Как её убрать?
не знаю актуально еще или нет. Автор незаметно тихо))) в процессе написания добавил перед строкой void.setup() строку byte val;. После этого все стало работать корректно
Добрый день, вопрос будет ли работать если использовать вот так вот переменную в принте через точку? if (val > 19) { Serial.println("Вы ввели ".val); else Serial.println("Мимо"); }
Какую программы ты используешь чтобы быстро переводить набранное на английском в русский. И какие кнопки ты нажимаешь для быстрого построения выражения и авто задания отступов. Знаешь ли какие нибудь фишечки синтаксического сахара у Arduino IDE?
у меня почему то сом порт выдает 2 записи последовательно. еще когда с прошлым видео с числами игрался выдавало число, а потом еще какое то число, то отрицательное, то 0. а сейчас при посыле 1 или 5, сперва выдает первую строчку, потом мимо. при посыле другого числа, два "мимо" один за другим.
Небольшое дополнение: в си и си++ любое число не равное 0 считается как истина, и только 0 - это ложь соответственно. Вообще, использование большого числа конструкций if не очень хорошо, если есть вариант обойтись без него, в частности, при проектировании того же меню. Согласен, использование конструкций if это первое, что скорее всего приходит в голову, при проектировании меню, но это далеко не лучшее решение.
в каких-то случаях конечно конструкция switch интереснее if, но что касается именно меню, то чтобы проектировать полноценное древовидное меню с практически неограниченной вложенностью нужно использовать структуры. Конечно, если нужно отслеживать 2 или 3 состояния программы это из пушки по воробьям, и можно действительно обойтись более тривиальными решениями нежели использование структур. Конструкции ветвления - это неотъемлемая часть программ, однако линейный ход программы проще воспринимается. Огромные каскады вложенных друг в друга if-ов очень сложно читать и отследить, что куда зачем и почему, что порой может запутать разработчика, я уже молчу про то как это воспринимается другим человеком, который смотрит на подобные вещи).
Привет! Спасибо тебе за замечательный курс, очень доходчиво все объясняется! Есть вопрос - Начал учиться на плате RobotoDyn Uno v3 возможно плата неисправна и не верно интерпретирует код. В окне com порта после ввода цифры 1, или 5 (выполняется условие if), но следом сразу же выполняется команда else, т.е. в порте сначала появляется текст "Вы ввели число 1 или 5 ", а через секунду появляется "Мимо!" Вот мой код: byte val; void setup() { Serial.begin(9600); //Вывод на монитор порта } void loop() { if (Serial.available()) { val = Serial.parseInt(); if (val == 1 || val == 5) { Serial.println ("Вы ввели число 1 или 5"); } else { Serial.println ("Мимо!"); } } }
@@randomguyjustpassingby зае***ли почитайте комментарии к видео - найдёте ответ - главное 2-3 ответа , а вопрос один и тот же задали уже раз 50 наверное!
спасибо за подробное разжевывание материала ... я вообще в школе учил бейсик потом паскаль ... в си вот эти моменты мне немного были не понятны .. продолжайте пожалуйста с той же точностью передавать материал ... а будет урок по созданию например собственной библиотеки и ее написания для чего-нибуть экзотического !? :)
Разве есть принципиальная разница между паскалем, бейсиком, си в плане написания кода? операторы и команды просто обозначаются по-разному. Логика работы одинаковая же
между "окой" и "фурой с прицепом" тоже нет принципиальной разницы.и там,и там-транспорт.однако переход с одного на другое-сложноват. сможете сходу накодить управление шаговиками и вывод на 7 сегментник на бейсике? :)
Привет Alex, вот вбил в голову себе вопрос, какая разница между if и while, по сути они одинаковые, выполняют то что в скобках при верном условии, но всетаки, что и в каких случаях лучше использовать
В теории вроде бы, что то где то понятно, но не понятно)) так как еще незнаешь где это можно пременить. Когда то учился сайты собирать открывал в блокноте код хтмл сторонего сайта искал в нем джава скрипт или фрейм с русскими буквами или цифрами от div до /div заменял на свои. А здесь типо уравнений получается где не нужно весь код писать а кусочек условия... Интересная штука буду методом тыка изучать
привет!мне очень нравиться как обьясняешь но хотел бы тебя попрасить о помощи ,я хочу сделать что бы при нажатии на кнопку 1 или же на букву что бы загорался свето диод, как можно это сделать ?вот на видео мы указываем переменную и если она равно чему то,то будет выполнент код а как можно сделать что бы указал именно пин моде?вот допустим int val=pinMode(2,INPUT); и что бы тогда переменя понимала чтоя обрщаюсь именно к пин моду,,,можно сделать что то подобное ?извини за вопрос просто очень нужно мне
Alex, привет. Помоги с советом, как думаешь, почему при выполнении кода: int val = 0; void setup() { Serial.begin(9600); } void loop() { if (Serial.available()){ val = Serial.parseInt(); if (val == 1 || val == 3){ Serial.println("1 или 3"); } else { Serial.println("другое"); } } в мониторе порта при отправке 1 или 3 выводится "1 или 3" и сразу же "другое". Если отправляю 4, то выводится "другое" и еще раз "другое"? Спасибо.
У самого такая же проблема, но я нашёл из-за чего выводится. Допишите после каждого вывода ещё и вывод самой переменной: Serial.println(val); И увидите, что почему-то после считывания цифры ком-порт считывает 0, хотя его не вводят. А вот откуда берётся 0 - вопрос уже к знатокам)
Моя проблема решилась, попробуйте, мб у вас из-за этого же происходит. В мониторе порта, в правом нижнем углу 3 кнопки. Очистка, скорость и ещё одна (левая из них). Поставьте там вместо "новая строка" (у меня так было) - "нет конца строки". Видимо, ошибка была в том, что после нажатия "отправить" монитор отдельно отправлял ещё знак перевода строки - воспринимался как 0, который не проходит при проверке условия и выдавалась "ошибка".
Здравствуйте, программа, написанная по вашему видео, по какой-то причине выдаёт два ответа за раз. Вне зависимости от того, какая цифра была введена, за первым ответом следует второй - отрицательный. Добавил вывод числа в буфере и задержку, чтобы понять где что. Получается, в порт отправляется число, введённое с клавиатуры, выполняется команда, а по окончании в порт отправляется "0". Пробовал на двух ардуинках. Результат примерно такой при вводе 1234. Hello World! 1234 OK 0 error Листинг: byte val; void setup() { Serial.begin(9600); Serial.println("Hello World!"); } void loop() { if (Serial.available()) { int buff = Serial.parseInt(); Serial.println(buff); if (buff == 1234) { Serial.println("OK"); } else { Serial.println("error"); } Serial.setTimeout(4000); }
Здоров, набираю согласно твоему коду на if или switch не важно и у меня после каждого действия обязательно выполняется команда если, не важно верно не верно введено значение в порт, все равно выводит если. допустим вводишь "1", он говорит да верно "ввели 1" и затем сразу пишет "неверно" не пойму прикола
Беру твой скетч из примера - работает. Переписываю под свои данные - не работает. Так и не смог достукивание пока написать. Он уже на стадии if(radio.write(&data, sizeof(data))) {} некорректно работает: устройство, которые принимает, успешно принимает данные и выводит на экран, значит они были отправлены, но условие не срабатывает
Небольшое добавление по условиям. Существует и укороченная запись условий (a > b) ? c == true : c==false; Если А больше B то С равно истина, иначе С равно ложь..Так же имеет место запись присваивания переменной значения результата сравнения: c == (a > b);
Не поможешь с скетчем на 2 контактное реле? Проблема в том что перед выключением первого реле за пару секунд с начало включается второе вере а потом лишь выключается первое. Что в скетче не так? или это железо? int R2 = 7; int R1 = 8; void setup() { // put your setup code here, to run once: pinMode(R1, OUTPUT); pinMode(R2, OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(R1,1); delay(1000); digitalWrite(R1,0); delay(1000); digitalWrite(R2,1); delay(1000); digitalWrite(R2,0); delay(1000); }
помогите разобраться! по какой то причине break после выполнения case не выполняется и в мониторе порта я наблюдаю так же выполнение строчки default, хотя условия выполнения case соответствовали и он выполнялся... int LED = 3; void setup(){ pinMode (LED, OUTPUT); Serial.begin (9600); Serial.println("Йо!"); Serial.print("Для включения устройства введите ");Serial.println(1); Serial.print("Для выключения устройства введите ");Serial.println(2); } void loop(){ if (Serial.available()>0){ int bufer = Serial.parseInt(); switch (bufer){ case 1: Serial.println("Вы включили устройство!"); digitalWrite(LED, HIGH); break; case 2: Serial.println("Вы выключили устройство!"); digitalWrite(LED, LOW); break; case 1234: Serial.println("Вы ввели тестовый код!"); break; default: Serial.println("Вы ввели неверный код!"); } Serial.flush(); } }
Приветствую! Делаю первые шаги по Вашим урокам. Сегодня, повторяя урок, не могу найти в чём у меня ошибка. А именно при использовании val, у меня выскакивает обе строки, сперва -Вы ввели 1 или 5 , а потом -Мимо или наоборот. Перепроверил несколько раз, переписал заново. Результат прежний. Подскажите, в чём причина?
Добрый день! Все сделал по этому уроку (конспект 3.1). Выводит все правильно, независимо от ввода всегда выводит лишний раз "мимо", а если ввести что-то кроме 1 или 5, то выводит 2 раза "мимо" с задержкой в секунду. Подскажите, в чем может быть проблема?
Алекс есть вопрос о Serial.available. Я так понимаю обьем 64байта и Serial.available долна возвращать число. В общем я попытался его узнать, но каждый раз выбивало ошибку при загрузке на ардуино. Тогда я написал следующий код: if (Serial.available()) { Serial.print ("Ok"); }else{ Serial.print ("Not Ok"); } Ответ был Not Ok. Хотя я ничего в память не грузил и кроме этого когда никаких переменных не вводилось. Может я что-то не так понял или не правильно код написал? Это мой первый день с ардуино, так что вот... Пока что не понятно почему Serial.available = 0
Побольше выпусков и подробностей, с нетерпением жду, ты наверное единственный кого даже приятно слушать, и я бы хотел с тобою как-то связаться, я новичок в этой сфере, очень хочу осуществить проект умного дома, как раз строем дом, если будет возможность рассмотри программу "Blynk"
То самое ощущение, когда в 12-14 лет по наитию кодил в Pawn, пытаясь сделать годный сервер в SAMP, а теперь видишь всё это до боли знакомое, хоть сейчас садись делать умный дом… А Питона я так и не смог в универе освоить и понять…
Алекс смотрите ,ардуино можно прошить с компа. Допустим на компе вы написали код и для ардуино и вы его прошили, а можно если нет кода на компе , а ардуино запрограммировано то с ардуино перенести код на комп ????
Народ, подскажите, пожалуйста! А если мне нужно выделить несколько значений для выполнения одного действия? Например: если переменная равна 1,3,5,7.то делаем одно, иначе если переменная равна 2,4,6 ,8 то делаем другое. можно ли в операторе If через && сравнивать 5-10 значений?
Народ, подскажите, у меня не получается машинку запрограммировать. На моей программе (IDE 2.3.3.) не получается поставить три знака И (&&) в условии if . А мне надо выбрать отдну из четырех программ (вперед, назад, вправо, влево). Когда я пишу if (a == 1 && b == 0 && c == 0) - программа работает и машинка едет Но когда if (b == 1 && a == 0 && c ==0 && d == 0) - программа не работает из-за добавления четвертого компонента. Но тогда моя машинка может только вперед (a) , назад (b) и влево (c) , а вправо (d) уже не может. Что делать? Все форумы - мертвые - спросить негде.
Спасибо, твой вклад в развитие будет неотъемлемым, человечество тебя не забудет.(не троллинг)
тоже самое и про твой троллинг!!
+yevgen Zt какой ещё тролинг?? Я всерьёз, очень понравился урок сам сижу и повторяю на своей ардуинке.
Вы Kave Gonson верно? Если то идите в apergure scince или когда выйдет portal 3
Пожалуйста больше уроков, единственный канал с прекрасными объяснениями!
Спасибо тебе, собрал несколько твоих устройств, теперь дошел до уроков, просто и понятно, жму руку.
Вот тут уже сложнее. Каждую команду и каждое выражение пересматриваю по несколько раз, чтоб догнать о чем речь идет. Но пока мой мозг хоть с трудом, но справляется. Спасибо большое за уроки. может когдато научусь ардуинить)))
Научился?
ждем-с
Использовать boolean (bool) лучше со значениями true и false
C++ приравнивает ноль к false а любое число к true
К примеру:
bool x = 2;
if (x == 1) then {
Serial.println("истина");
} else {
Serial.println("ложь");
}
// В порт выведется слово истина, хотя присваивали двойку
Еще стоило указать возможность использования одновременно нескольких условий switch оператора:
switch (val) {
case 1:
case 2:
Serial.println("1 или 2");
break;
case 3:
Serial.println("3");
break;
}
+WakeUp4L1fe ого спасибо, это не знал. Допишу в пособие, все равно его почти все смотрят)
понимаю что еще рано, но очень жду что кто-то внятно расскажет про все интерфейсы подключений. UART I2C SPI.
Никакого смысла в типе boolean тут нет, один хрен он целый байт занимает. Проще запомнить, что всё что не равно нулю это true, а ноль это false.
Узнал о программировании на С++ больше, чем из курса по С++
Alter Moonsy ну как сказать C++ я программирую на java и там всё также!
@@superspinner2313 потому что джава C подобный
@@hdfroggit3051 все языки имеют почти одинаковую структуру и если ты понял хоть один язык то следующие учить почти не надо будет
Спасибо, лчень рада тому, что любой сможет постичь ардуино через ваши уроки)
🥵🥵🥵🥵🥵🥵🥵🥵
Огромадная благодарность за отличные уроки !
Случайно давным-давно попал на основной канал, так - посматривал. Зашёл сегодня сюда - и вот он, далёкий 88 год, компьютер Электроника не помню какой и почти Basic в пояснениях ))) Славное дело делаете, Алексей! Успехов вам!
супер курсы у вас , вы молодец, все максимально подробно и неторопясь и доходчиво
как же офигенно интересно, давно облизывался что бы начать и вот, всё офигенно понятно по крайней мере если хоть отдалённо есть представление о с++
Друг скинул проект для светового фейер шоу в цирке на Ардуинке. Сижу разбираюсь.) Классные уроки. Спасибо тебе огромное за доступность.)
спасибо за подробные объяснения!))
Мой "палец вверх в вашей копилке". Спасибо за образование. У вас педагогический талант.
+Олег Абдусаламов спасибо) здесь решающую роль играет сценарий, который тщательно прорабатывается
Прошу урока меню на OLED + Энкодер!
Кто за?
я
Таймкод 3:35 что нужно сделать, чтобы при повторном вводе 1 или 5, в порте не отображалась повторно надпись "Вы ввели 1 или 5" ? Чтобы внезависимости от того чтобы ты не нажимал, высвечивались по очереди фразы верно/мимо ?
String mess = "верно";
void setup(){
Serial.begin(9600);
}
void loop() {
String worD = "";
while (Serial.available() > 0){
delay(2);
worD += String(char(Serial.read()));}
if (not(worD == "")){
Serial.print(worD +' ');
Serial.println(mess);
if (mess == "верно"){
mess = "мимо";
}else{
mess = "верно";
}
}
}
@@dancing_master поздно)
@@ПавелКрасильников-л8м , а почему не так : -поздно коллега))ахахаха)
Ладно це жарт! На цілий місяць відстаю від Вас ,буду продовжувать навчання.
Большое тебе спасибо все ясно и понятно
3:02 "давайте получим данные спорта" ... в голове забурлили варианты того зачем могут быть нужны спортивные данные.
Ахахах лол
Тоже самое :D
Все круто и понятно!
спасибо)
Спасибо автору за хорошее объяснение!
Спасибо за полезный видос. Лайк!
Круто, спасибо тебе Гувер
Ждем новых видео с нетерпением, в переди большая работа)
Почему при использовании Serial.parseInt() после ввода цифры и нажатия Enter автоматом через 1-2 секунды вводится ноль?
проверял ваши примеры, всегда в ответе получаю на 2 ответа, на if и на else. может у меня неисправный ардуино. Пример Ваш переписал один к одному.
Ниже пишут, что в мониторе порта надо внизу в первой вкладке выбрать "Нет новой строки". У тебя похоже стоит "NL (Новая строка)". Мне помогло
@@Volka0071 мне тоже помогло! От души!
открой фигурную скобку после if и закрой ее перед else тоже самое с else то что должно исполняться в фигурные скобки
Такая же проблема
@@Volka0071 огромное спасибо, помог!
Посмотрев несколько видео я понял что этот язык очень похож на java, я давно хотел изучить программирование на arduino и теперь я думаю мне будет легче освоить, так как я учу java и много чего уже знаю, очень жаль что вы не делаете уроки по программированию на java так как вы все расставляете по полочкам и все очень понятно, я для себя не могу найти понятных уроков для java, по этому я скачиваю библиотеки, проекты и пытаюсь разобраться как это работает но если что то совсем не понятно или нужно освоить какие то функции просто ищу в интернете, для меня это удобно по тому что я от начала и до конца изучаю код и запоминаю а так же добавляю какие то свои функции.
Мне лично кажется, что Ардуино схож по синтаксису и с C,C++,C#,Java. Сам учу C# и за исключением небольших отличий там все тоже самое.
для новичка в програмировании осень сложно в книге изучаем ардуино: инстременты и методы технического волшебства всё также подробно но легче усваивается
Спасибо Алекс.
Учусь можно сказать на твоих уроках)
Больше похоже на твою дипломную конечно.
Хотелось бы углубленный курс, за вменяемый прайс)
Удобней конспектировать по роликам в тюб, чем из книг, аля с кул преподом, ЛОЛ=)))
Моя дипломная - космический спутник зондирования земли) учу людей только на канале, есть уроки на сайте, лично ни с кем не занимаюсь
Супер, очень нравится.
if(serial.available()) {
val = serial.parseInt()
list = [1,2,3]
if (list.includes(val)){
Serial.println("Вы ввели ${val}")
} else {
Serial.println("Мимо")}
}
Правильнее будет писать так и работать это будет быстрее, не серчай если тут есть ошибки, привёл грубый пример на JS , но концепция я думаю понятна
Через if или switch всегда приходят два ответа. Если верное значение, пишет его и то что в default, если попадает значение в default, то он два раза прихоит. Куда копать?
Нужны практические примеры. Без примеров это сухая теория, которую трудно понять
Полностью согласен с тобой
int val;
void setup()
{
Serial.begin(9600);
}
void loop()
{
if ( Serial.available() )
{
val = Serial.parseInt();
Serial.println(val);
}
}
Ввожу в COM порте значение переменной. Значение отображается, затем в следующей строке появляется ноль. Почему ?
Привет! Проблема появления 0 связанна с добавлением символа переноса строки в ввод COM порта, чтобы убрать этот символ можно добавить проверку в код:
while (Serial.available() && (Serial.read() != '
')) {}
Либо же выставить "Нет конца строки" в настройках ввода.
Здравствуйте ! Я обучаюсь по вашим видео, очень крутой контент . Спасибо тебе землянин ) !
Подскажите, операторами if, else , else if возможно построить меню или только switch подходит ?
2:30 раз мы берем от 200 до 400, то может надо" >= 200 &&
Да, верно, 200 и 400 будут игнорироваться, так как 200 > 200 - ложь, и 400 > 400 - ложь.
Какая операция обрабатывается быстрее if или switch ? У меня в коде переменная А равна число от 0 до 9, и в зависимости от переменной выполняется определенная операция. Выполнено с оператором if и else if. Так как код выполняет динамическую индикацию на семисегментром дисплее, мне интересен, если использовать структуру switch/case, получится увеличить скорость динамической индикации или нет?
Какая разница? Это ведь не одно и тоже!
Как всегда круто и познавательно! спасибо!!!
А как сделать так, чтобы после первого ответа "вы написали 2" (к примеру) ты о5 пишешь 2 и он отвечает уже другое, ну что-то вроде "вы опять ввели 2" ??
Спасибо брат
Спасибо за видео и советы
всё понятно круто от меня подписка лайк комент и колокольчик
Почему в мониторе при вводе например "1" пишет "вы ввели 1" и сразу же "мимо". Т.е. два ответа на 1 запрос...
тоже с этим столкнулся, щас понял, в мониторе порта нужно выбрать "нет конца строки"
@@genatin12 спс, попробую.
@@genatin12 спасибо, очень помог!!!
почему у меня после ввода числа и его вывода выводится еще один ноль? Делал все по примеру c предыдущего урока. То же самое и с выводом "вы ввели..." или "Мимо " выводится еще лишний раз "Мимо"
то же самое и с switch/case. При любом ответе еще добавляет "Мимо"
@@vladsmolnik8685 в мониторе порта нужно выбрать "нет конца строки" и все будет ок
Урок супер! Спасибо тебе! Все законспектировал, жду новые уроки
Такой вопрос, как соединить 2 скетча? Один на то, чтобы включать светодиод и после выключать. Другой - мигание светодиода путём автоматического включения и выключения быз кнопки. В общем, чтобы через кнопку включать мигание, а после выключить?
Премного благодарен.
Алекс спасибо за очередной урок!
подскажите пожалуйста! такая проблема при работе с портом, он считает энтер за число, поэтому при вводе например 1 или 5, мне выдает: "вы ввели 5" потом на другой строке сразу же "мимо"
Кто подскажет, все сделал как на видео, но после ввода любого значения через полсекунды вводит пустое поле? с предыдущим уроком было также...
У меня вопрос, в видео есть строчка. val = Serial.parseint(); это как я понимаю объявление переменной, в уроке она так и работает но у меня пишет ошибку если я не установлю тип данных Пример : int val = Serial.parseint(); почему так? И еще у меня в Com порте сразу после вывода ответа появляется в следующей строке появляеться надпись мимо даже если я указываю значение в нужном диапазоне. Как её убрать?
не знаю актуально еще или нет. Автор незаметно тихо))) в процессе написания добавил перед строкой void.setup() строку byte val;. После этого все стало работать корректно
Доброго времени суток! У меня возвращается 2 раза "Мимо!". И даже после "Вы ввели 1 или 5". При получении цифр тоже были лишняя цифра "10"
В мониторе COM порта поставьте "Нет конца строки".
Добрый день, вопрос будет ли работать если использовать вот так вот переменную в принте через точку? if (val > 19) {
Serial.println("Вы ввели ".val);
else
Serial.println("Мимо");
}
Какую программы ты используешь чтобы быстро переводить набранное на английском в русский. И какие кнопки ты нажимаешь для быстрого построения выражения и авто задания отступов. Знаешь ли какие нибудь фишечки синтаксического сахара у Arduino IDE?
Блин как же приятно понимать о чем тут говорят ! Спасибо шарпику..
у меня почему то сом порт выдает 2 записи последовательно. еще когда с прошлым видео с числами игрался выдавало число, а потом еще какое то число, то отрицательное, то 0. а сейчас при посыле 1 или 5, сперва выдает первую строчку, потом мимо. при посыле другого числа, два "мимо" один за другим.
Такая-же фигня
Небольшое дополнение:
в си и си++ любое число не равное 0 считается как истина, и только 0 - это ложь соответственно.
Вообще, использование большого числа конструкций if не очень хорошо, если есть вариант обойтись без него, в частности, при проектировании того же меню. Согласен, использование конструкций if это первое, что скорее всего приходит в голову, при проектировании меню, но это далеко не лучшее решение.
+Kirill Petrakov но я же сказал что свитч лучше подходит для этих целей. Правильно?
в каких-то случаях конечно конструкция switch интереснее if, но что касается именно меню, то чтобы проектировать полноценное древовидное меню с практически неограниченной вложенностью нужно использовать структуры. Конечно, если нужно отслеживать 2 или 3 состояния программы это из пушки по воробьям, и можно действительно обойтись более тривиальными решениями нежели использование структур.
Конструкции ветвления - это неотъемлемая часть программ, однако линейный ход программы проще воспринимается. Огромные каскады вложенных друг в друга if-ов очень сложно читать и отследить, что куда зачем и почему, что порой может запутать разработчика, я уже молчу про то как это воспринимается другим человеком, который смотрит на подобные вещи).
структуры, это которые struct?
The Daniil можешь дать вк?
Просто топ!!!
Привет! Спасибо тебе за замечательный курс, очень доходчиво все объясняется! Есть вопрос - Начал учиться на плате RobotoDyn Uno v3 возможно плата неисправна и не верно интерпретирует код. В окне com порта после ввода цифры 1, или 5 (выполняется условие if), но следом сразу же выполняется команда else, т.е. в порте сначала появляется текст "Вы ввели число 1 или 5
", а через секунду появляется "Мимо!"
Вот мой код:
byte val;
void setup() {
Serial.begin(9600); //Вывод на монитор порта
}
void loop() {
if (Serial.available()) {
val = Serial.parseInt();
if (val == 1 || val == 5) {
Serial.println ("Вы ввели число 1 или 5");
} else {
Serial.println ("Мимо!");
}
}
}
У меня абсолютно такая же проблема, нашлось решение?
@@randomguyjustpassingby зае***ли почитайте комментарии к видео - найдёте ответ - главное 2-3 ответа , а вопрос один и тот же задали уже раз 50 наверное!
@@Алексей-п4й7у именно так и сделал и нашёл ответ, проблема решена. А если вам было не лень залезать сюда и жаловаться на это, то проблема уже ваша
Такой вопрос, как через If сравнивать состояние выхода?
Пример: if (61
Что делать если не отображаются цифры в КОМ порте как у тебя? Вводишь в строке цифру и ноль эмоций? Версия IDE 2.0.3
спасибо за подробное разжевывание материала ...
я вообще в школе учил бейсик потом паскаль ...
в си вот эти моменты мне немного были не понятны ..
продолжайте пожалуйста с той же точностью передавать материал ...
а будет урок по созданию например собственной библиотеки и ее написания
для чего-нибуть экзотического !? :)
+igor podol спасибо) написание библиотеки очень комплексная задача, поэтому урок про это будет одним из последних
спасибо ..понятно ... возможно даже несколько уроков-циклов ...
Разве есть принципиальная разница между паскалем, бейсиком, си в плане написания кода?
операторы и команды просто обозначаются по-разному. Логика работы одинаковая же
между "окой" и "фурой с прицепом" тоже нет принципиальной разницы.и там,и там-транспорт.однако переход с одного на другое-сложноват. сможете сходу накодить управление шаговиками и вывод на 7 сегментник на бейсике? :)
Разве в паскале не джава?
спасибо тебе, очень помог
Привет Alex, вот вбил в голову себе вопрос, какая разница между if и while, по сути они одинаковые, выполняют то что в скобках при верном условии, но всетаки, что и в каких случаях лучше использовать
В теории вроде бы, что то где то понятно, но не понятно)) так как еще незнаешь где это можно пременить. Когда то учился сайты собирать открывал в блокноте код хтмл сторонего сайта искал в нем джава скрипт или фрейм с русскими буквами или цифрами от div до /div заменял на свои. А здесь типо уравнений получается где не нужно весь код писать а кусочек условия... Интересная штука буду методом тыка изучать
Алекс, у меня проблема: ввожу в COM цифру 1, оно выдаёт "Вы ввели 1" и после этого само по себе выдаёт "Мимо", что не так я делаю?
че, нашел решение? та же фигня
В мониторе порта (COM,) в самом низу окна, выбери "Нет конца строки"
@@qbden5880 Спасибо тебе! А то думаю, ну че вот за херня, делаю все как он сказал, а на деле не так :( недоговаривает :)
@@qbden5880 спасибо
привет!мне очень нравиться как обьясняешь но хотел бы тебя попрасить о помощи ,я хочу сделать что бы при нажатии на кнопку 1 или же на букву что бы загорался свето диод, как можно это сделать ?вот на видео мы указываем переменную и если она равно чему то,то будет выполнент код а как можно сделать что бы указал именно пин моде?вот допустим int val=pinMode(2,INPUT); и что бы тогда переменя понимала чтоя обрщаюсь именно к пин моду,,,можно сделать что то подобное ?извини за вопрос просто очень нужно мне
Алекс, сделай пожалуйста обзор работы мультисерво шита на 20+ серв. Желательно на примере гесапода или, лучше, октапода.
Alex, привет. Помоги с советом, как думаешь, почему при выполнении кода:
int val = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()){
val = Serial.parseInt();
if (val == 1 || val == 3){
Serial.println("1 или 3");
} else {
Serial.println("другое");
}
}
в мониторе порта при отправке 1 или 3 выводится "1 или 3" и сразу же "другое". Если отправляю 4, то выводится "другое" и еще раз "другое"? Спасибо.
Вы не узнали еще ответ на свой вопрос? Та же хрень просто. Поделитесь пожалуйста
@@ЗахарПлатонов-р8с нет, к сожалению все ещё мучаюсь
У самого такая же проблема, но я нашёл из-за чего выводится. Допишите после каждого вывода ещё и вывод самой переменной: Serial.println(val);
И увидите, что почему-то после считывания цифры ком-порт считывает 0, хотя его не вводят. А вот откуда берётся 0 - вопрос уже к знатокам)
Моя проблема решилась, попробуйте, мб у вас из-за этого же происходит. В мониторе порта, в правом нижнем углу 3 кнопки. Очистка, скорость и ещё одна (левая из них). Поставьте там вместо "новая строка" (у меня так было) - "нет конца строки".
Видимо, ошибка была в том, что после нажатия "отправить" монитор отдельно отправлял ещё знак перевода строки - воспринимался как 0, который не проходит при проверке условия и выдавалась "ошибка".
@@ckop9449 спасибо, обязательно попробую)
Люди знакомые с Java или C#. Привет) Скипаем видос...
Привет
Покажи пожалуйста как написать програму на лампу настроения?
Подскажите пожалуйста, как включить отображение нумерации строк кода?
Привет прошу сделай урок про погружение ардуино в глубокий сон.
Здравствуйте, программа, написанная по вашему видео, по какой-то причине выдаёт два ответа за раз. Вне зависимости от того, какая цифра была введена, за первым ответом следует второй - отрицательный. Добавил вывод числа в буфере и задержку, чтобы понять где что. Получается, в порт отправляется число, введённое с клавиатуры, выполняется команда, а по окончании в порт отправляется "0". Пробовал на двух ардуинках. Результат примерно такой при вводе 1234.
Hello World!
1234
OK
0
error
Листинг:
byte val;
void setup() {
Serial.begin(9600);
Serial.println("Hello World!");
}
void loop() {
if (Serial.available()) {
int buff = Serial.parseInt();
Serial.println(buff);
if (buff == 1234) {
Serial.println("OK");
} else {
Serial.println("error");
} Serial.setTimeout(4000);
}
}
Не могли бы вы подсказать, в чём ошибка?
Здоров, набираю согласно твоему коду на if или switch не важно и у меня после каждого действия обязательно выполняется команда если, не важно верно не верно введено значение в порт, все равно выводит если. допустим вводишь "1", он говорит да верно "ввели 1" и затем сразу пишет "неверно" не пойму прикола
То же такая проблема!
Добрый день! А как исправить проблемы с кодировкой? У меня вместо сообщений "Вы ввели 1 или 5" и "Мимо!" вылазиют иероглифы.
А что тройного равно как в php нету? Для проверки на равенство и соотношения типов.
Напиши про nRF24l01 еще! В плюсах ты писал, что есть функции достукивая до приемника и тд и тп, как это все реализуется?
+Дмитрий Патрушев там в настройках все прописано уже) считай в моих скетчах по умолчанию достукивание стоиь
Беру твой скетч из примера - работает. Переписываю под свои данные - не работает. Так и не смог достукивание пока написать. Он уже на стадии if(radio.write(&data, sizeof(data))) {} некорректно работает: устройство, которые принимает, успешно принимает данные и выводит на экран, значит они были отправлены, но условие не срабатывает
Если интересно, radio.write() возвращает первые 3 раза единицу, а потом ноль. Адрес переписывал в разных вариантах, но баг присутствует до сих пор.
Скажите почему else выполняется всегда у меня?
void loop() {
if (Serial.available()){
val = Serial.parseInt();
if (val == 1 && val == 5 ){
Serial.println("val = 1 or var =5");
}else{
Serial.println("miss");
}
}
}
ввожу 5 или 1 выводит: val = 1 or var =5 и сразу miss , т.е. else сработало, почему-то?
Serial.println("val = 1 or var =5"); Убери ковычки в скобках.
после функции if через секунду срабатывает else, уже под копирку переписал всё с экрана, всё равно. што делать, куда смотреть?
Тоже самое, не могу понять почему..., а ответа не вижу ((
Нашли ответ?
Небольшое добавление по условиям. Существует и укороченная запись условий (a > b) ? c == true : c==false; Если А больше B то С равно истина, иначе С равно ложь..Так же имеет место запись присваивания переменной значения результата сравнения: c == (a > b);
+Alexei Belousov спасибо, добавлю в пособие
(a > b) ? c == true : c==false ! Это называется тернарный оператор
опять же как и с кейсом, если у тебя идет условия, вложенные в условия, то: -что свитч кейс не читабелен; -что ()?: не читабельно...
Не поможешь с скетчем на 2 контактное реле?
Проблема в том что перед выключением первого реле за пару секунд с начало включается второе вере а потом лишь выключается первое.
Что в скетче не так? или это железо?
int R2 = 7;
int R1 = 8;
void setup() {
// put your setup code here, to run once:
pinMode(R1, OUTPUT);
pinMode(R2, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(R1,1);
delay(1000);
digitalWrite(R1,0);
delay(1000);
digitalWrite(R2,1);
delay(1000);
digitalWrite(R2,0);
delay(1000);
}
В школе C# изучаем. Рад что пригодилось)))
Полезный урок. Спасибо.
А платы по ссылке ещё и спаивать надо???
Все вслушиваюсь в музыку, знакомая, но не могу понять откуда. Приятная. Может из игры Bobby Carrot, но не факт
что такое VAL?
как мне понять ардуинку если ты рассказываешь с первых уроков для тех кто уже вкурсах про это всё??
помогите разобраться!
по какой то причине break после выполнения case не выполняется и в мониторе порта я наблюдаю так же выполнение строчки default, хотя условия выполнения case соответствовали и он выполнялся...
int LED = 3;
void setup(){
pinMode (LED, OUTPUT);
Serial.begin (9600);
Serial.println("Йо!");
Serial.print("Для включения устройства введите ");Serial.println(1);
Serial.print("Для выключения устройства введите ");Serial.println(2);
}
void loop(){
if (Serial.available()>0){
int bufer = Serial.parseInt();
switch (bufer){
case 1: Serial.println("Вы включили устройство!"); digitalWrite(LED, HIGH);
break;
case 2: Serial.println("Вы выключили устройство!"); digitalWrite(LED, LOW);
break;
case 1234: Serial.println("Вы ввели тестовый код!");
break;
default: Serial.println("Вы ввели неверный код!");
}
Serial.flush();
}
}
Приветствую! Делаю первые шаги по Вашим урокам. Сегодня, повторяя урок, не могу найти в чём у меня ошибка. А именно при использовании val, у меня выскакивает обе строки, сперва -Вы ввели 1 или 5 , а потом -Мимо или наоборот. Перепроверил несколько раз, переписал заново. Результат прежний. Подскажите, в чём причина?
В мониторе порта (COM,) в самом низу окна, выбери "Нет конца строки"
круто! спасибо большое! Даешь следующий урок!)))
3:30 Твой скетч будет выдавать и условие if, и условие else, просто второе условие через секунду выдаст, я проверил, не знаю, с чем это связано
Да, у меня так же. Ошибок в коде нет, точно проверил. В чем может быть проблема?
@@simonriley9938, если найду, то сообщу, а пока можно пользоваться aльтернативой с else if
@@simonriley9938 я разобрался, теперь повторно не выводится
@@alexsandravakyan469, расскажите пожалуйста, заранее благодарю.
Simon Riley в консоли порта com 3 или 5 есть в правом нижнем углу кнопка nl новая строка ты нажимаешь на неё и заменяешь на нет конца строки
Добрый день! Все сделал по этому уроку (конспект 3.1). Выводит все правильно, независимо от ввода всегда выводит лишний раз "мимо", а если ввести что-то кроме 1 или 5, то выводит 2 раза "мимо" с задержкой в секунду. Подскажите, в чем может быть проблема?
в терминале нужно поставить "нет конца строки"
@@evgeshmyname Спасибо! Помогло)
Алекс есть вопрос о Serial.available. Я так понимаю обьем 64байта и Serial.available долна возвращать число. В общем я попытался его узнать, но каждый раз выбивало ошибку при загрузке на ардуино. Тогда я написал следующий код:
if (Serial.available()) {
Serial.print ("Ok");
}else{
Serial.print ("Not Ok");
}
Ответ был Not Ok. Хотя я ничего в память не грузил и кроме этого когда никаких переменных не вводилось. Может я что-то не так понял или не правильно код написал? Это мой первый день с ардуино, так что вот... Пока что не понятно почему Serial.available = 0
Побольше выпусков и подробностей, с нетерпением жду, ты наверное единственный кого даже приятно слушать, и я бы хотел с тобою как-то связаться, я новичок в этой сфере, очень хочу осуществить проект умного дома, как раз строем дом, если будет возможность рассмотри программу "Blynk"
Тот момент когда работаешь с JavaScript и смотришь в х2 скорости что бы не упустить что в С чего не знал.
Спасибо! Я написал 5 программу а это мая первая игра.
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(A4, INPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
}
void loop() { { {
digitalWrite(2,1);
delay(1000);
digitalWrite(2,0);
digitalWrite(3,1);
delay(1000);
digitalWrite(3,0);
digitalWrite(4,1);
delay(1000);
digitalWrite(4,0);
}
digitalWrite(5,1);
analogRead(A4==1);
digitalWrite(5,0);
digitalWrite(6,1);
delay(2000);
digitalWrite(6,0);
}
if ((4,HIGH) && (5,HIGH)) {
digitalWrite (7,HIGH);
}
}
То самое ощущение, когда в 12-14 лет по наитию кодил в Pawn, пытаясь сделать годный сервер в SAMP, а теперь видишь всё это до боли знакомое, хоть сейчас садись делать умный дом…
А Питона я так и не смог в универе освоить и понять…
Алекс смотрите ,ардуино можно прошить с компа. Допустим на компе вы написали код и для ардуино и вы его прошили, а можно если нет кода на компе , а ардуино запрограммировано то с ардуино перенести код на комп ????
Народ, подскажите, пожалуйста! А если мне нужно выделить несколько значений для выполнения одного действия? Например: если переменная равна 1,3,5,7.то делаем одно, иначе если переменная равна 2,4,6 ,8 то делаем другое.
можно ли в операторе If через && сравнивать 5-10 значений?
поздновато кнш, но такое делается switch
Народ, подскажите, у меня не получается машинку запрограммировать. На моей программе (IDE 2.3.3.) не получается поставить три знака И (&&) в условии if . А мне надо выбрать отдну из четырех программ (вперед, назад, вправо, влево).
Когда я пишу if (a == 1 && b == 0 && c == 0) - программа работает и машинка едет
Но когда if (b == 1 && a == 0 && c ==0 && d == 0) - программа не работает из-за добавления четвертого компонента. Но тогда моя машинка может только вперед (a) , назад (b) и влево (c) , а вправо (d) уже не может. Что делать? Все форумы - мертвые - спросить негде.
Помогите пожалуйста как сделать
Чтоб если 1 кнопка нажата то если 2 кнопка нажата (сделать что то)
тернарные операторы это самое лучшее в языках программирования