Несколько вопросов по програмированию arduino
- Войдите на сайт для отправки комментариев
Пнд, 14/12/2015 - 00:14
Вопрос о програмирование Arduino.
Прочитал книжку "Arduino блокнот програмиста" и не понял некоторые моменты.
1)
int inputVariable = 0; задает переменную inputVariable и присваивает ей значение 0
int ledPin = 4; задает что переменная ledPin это 4 вывод МК
что за странный синтаксис? почему одиниковые команды действуют по разному? и как определить какой вывод цифровой или аналоговый задается, ведь номера у них одинаковые?
Посоветуйте пожалуйста хорошие книжки по Arduino для новичков;
СПАСИБО
переменная int Variable=7 хранит значение 7 , а вот что ты имеешь ввиду под этим - количество слонов , номер пина , значение АЦП на аналоговом пине - зависит только от тибя
номера у пинов все разные
для начала можно и здесь почитать http://arduino.ru/Reference
int inputVariable = 0; задает переменную inputVariable и присваивает ей значение 0
int ledPin = 4; задает что переменная ledPin это 4 вывод МК
что за странный синтаксис? почему одиниковые команды действуют по разному? и как определить какой вывод цифровой или аналоговый задается, ведь номера у них одинаковые?
На самом деле
Автор примера перестарался и Вас запутал.
Программист волен по своему усмотрению создавать любые переменные, давать им любые допустимые имена и использовать дальше в программе.
Уверен, что далее в примере переменная ledPin использовалась для указания номера вывода микроконтроллера, именно об этом и пытался сказать автор примера, хоть и несколько косноязычно.
Прежде чем всерьез браться за Ардуино, очень рекомендую освоить основы программирования. Лучше всего по школьному учебнику или книге для школьников. Язык не важен (С, Паскаль, С++, Кумир, Ява и т.д.)
Изучение надо начинать с С и потом С++, ибо все остальные языки - суть производные. Кроме разного рода экзотик типа функциональных и языков СУБД. :)
Изучение надо начинать с С и потом С++, ибо все остальные языки - суть производные. Кроме разного рода экзотик типа функциональных и языков СУБД. :)
Лично я не разделяю это мнение. Оба языка тянут вместе с бэкграундом практического профессионального применения много вещей совершенно не нужных при первоначальном знакомстве. В добавок оба языка тянут с собой слишком много процессорной архитектуры. Не случайно IDE Ардуины прячет часть "заумностей" от пользователя.
Специально для обучения программированию создан язык Паскаль. Я бы порекомендовал его. Кстати, он никак не производная от С. См. год появления языков:
https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%81%D0%BA%D0%B0%D0%BB%D1%8C_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
https://ru.wikipedia.org/wiki/%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
:) перечитайте свои же ссылки. :)
Язык С разработан в 1969 .. на базе языка Би .. который был конечно же "чуть раньше" .. если мне память не изменяет то это 1965 год. :) Ну и соответственно он СРАЗУ же пошел в работу..
Язык Паскаль разработан(!) в 1969 (1968 - начало таки) а "в обучение" по сути пошел только в 1978, когда была разработана СИСТЕМА программирования на нем .. до этого времени он просто лежал без дел .. как и 100500 "языков" того времени.
:)
Зачем и что упрятывали авторы wiring и главное куда - для меня пока "тайна за 7-ю печатями" .. ибо там "нечего прятать" от слова совсем. Разве что скетчи сделать тяжелыми и неповортливыми, дабы новички шустрее переходили на нормальные инструменты. Чем больше ковыряю исходники wiring, тем увереннее укрепляюсь в таком мнении. :)
С/С++ вполне можно изучать без привязки к железу .. там мног, да .. но не всё требуется для изучения.. :)
alex0, самое главное то, что никакого "программирования для Ардуино" в природе не существует.
Есть общее представление о программировании как умении применять для решения задач те или иные алгоритмы, и есть определенные алгоритмические языки, которые используются для записи алгоритмов с целью последующего ввода в компьютер. Если алгоритм не предназначен для ввода в компьютер, алгоритмический язык необязателен, то же самое можно записать, например, по-русски или по-китайски.
Для того, чтобы программировать Ардуино нужно хотя бы в какой-то степени иметь представление о программировании (т.е. о составлении и использовании алгоритмов) и в какой-то степени знать языки С и С++, которые используются в среде Ардуино.
Для обучения собственно программированию лучше всего, как уже было упомянуто выше, использовать алгоритмический язык Паскаль. Но для работы с Ардуино придется выучить еще С/С++.
Когда то давно програмировал на паскале, и сейчас это сильно мешает.
alex0, самое главное то, что никакого "программирования для Ардуино" в природе не существует.
Согласен, но всёже это не С++, и Си мне не нужен, я сисадмин и не програмист. Просто увлекаюсь радиоэлектроникой, а писать код проще чем паять схемы))
В Ардуино используется как раз Си/Си++, а нужно это Вам или нет - решать Вам.
PS. Я тоже больше привык писать на Паскале или Фортране, но коль скоро здесь используется С++, пишу на С++.
Разобрался с назначением пинов и переменных, и вот мой первый скетч))
Наifал ))
Буду рад критике и подсказкам)))
Перечитайте двумчиво это http://arduino.ru/forum/programmirovanie/etyudy-dlya-nachinayushchikh-mr... и критика вам не понадобится. :)
Практика критерий истины.
Ратотает - ок.
Не работает - нужно упростить и локализовать ошибку.
Перечитайте двумчиво это http://arduino.ru/forum/programmirovanie/etyudy-dlya-nachinayushchikh-mr... и критика вам не понадобится. :)
Спасибо за ссылочку)) "Алгоритмическая оптимизация" для меня пока еще сложна, а кодовой займусь на днях.
Помогите пожалуйста, не понимаю что компилятор от меня хочет, вроде синтаксис по учебнику;
Всё понял, извиняюсь)
в конце скетча нет }
void(loop){ кто закрывать будет?
На скрине просто не видно, скетч длинный))
А ошибка была в том что поставил запятые в for а не точку с запятой
Я снова обращаюсь к вам за помощью.
На LCD дисплее отображается только Loading (строки кода 26 и 59-62) и lcd.clear(81-83) не очищает дисплей, а также не "Меню" отображается "Меню" (85-100), хотя всё работало. Если написать в другом месте кода lcd.print("blablabla") тоже не отображает
Помогите пожалуйста, пол дня уже с этим бьюсь(((
Общий подход - закоментировать строки с 64 по 76 и посмотреть, очистится ли экран. Если очистится, раскомментировать половину и снова проверить. И т.д. половинным делением локализовать ошибку.
Вот тут непонятно:
вроде, как пытаетесь управлять пином зарезервированным для экрана.
Sindbad, СПАСИБО.
Немного изменил код. Работает стабильно, но есть пара вопросов, на которые гугл не смог ответить.
1) analogWrite нормально выдает ШИМ сигнал на выходах 5, 9, 10, но не работает(всегда низкий уровень)
на выходах 3 и 11.
2) Без delay в конце кода прием и обработка сигнала ИК пульта не совсем корректна
Так быть не должно:
А по задумке должно быть так
Тут delay(200).
При delay(100) 10 повторов нормально, а дальше как без delay.
ВСЕM ОГРОМНОЕ СПАСИБО ЗА ПОМОЩЬ!!!)))))