Что новенького?
Новые примеры в разделе Communications (с соответствующими частями для Processing и MAX/MSP) by Tom Igoe.
- SerialCallResponse - посылает через Serial-порт данные от сенсоров + код для отрисовки на PC
- SerialCallResponseASCII - тоже самое, но данные передаются в десятичном виде через запятую.
Это для тех, кто пишет обработку поступающих от Arduino данных на Processing.
Поддержка Arduino Pro, Pro Mini 3.3V/8 MHz, а также LilyPad Arduino на ATmega328.
Все прогрессивное человечество уже перешло на ATmega328! А вы? ;) Кстати, одно время в DIP-корпусе этот МК отсутствовал на Маузере и Дижикее - не понимаю, неужели раскупили любители Arduino?...
Добавлены члены write(str) и write(str,buf) в классы Print, Serial и Ethernet Client/Server.
Ну наконец-то! Я испытал это неудобство на собственной "шкуре", когда модифицировал Ethernet Library под UDP. Действительно, базовый родительский класс для вывода - Print, поддерживающий богатое разнообразие входных форматов данных через функцию-член print - число, строка, массив, разные длины целых, разные системы счисления. Но в конечном-то итоге вызывается виртуальный write - именно его и должна перекрывать библиотека-потомок, реализующая вывод данных в определенное устройство. При этом write всегда принимал один-единственный символ - то есть, вывод шел побайтный. Приемлемо в LiquidCrystal, но в Ethernet эта концепция вписалась только по причине исключительной поддержки TCP. Для UDP мне пришлось заводить write_block, но теперь этого делать не надо! Bravissimo!
Улучшено подключение и отключение в классах Ethernet, что позволило сократить число неуспешных соединений и длительных таймаутов.
Например, в Client.connect(): более аккуратная работа с номером сокета, проверка состояния полузакрытия сокета SOCK_FIN_WAIT, дополнительная задержка 1 мс между окончанием установления соединения и проверкой, что оно еще живое... Я-то думал, что там уже нечего вычищать - но нет, работа по повышению стабильности продолжается!
Оптимизировано переполнение timer0, который используется в функциях millis() и micros()
Код стал чуть короче, в сумме это дало экономию 80 байт! Поскольку этот фрагмент кода включается в каждый скетч, "похудение" отразится на результатах компиляции всех скетчей. И - как знать, может кто-то не может втиснуться в размер памяти программ своей ATmega8/168 и не хватает ему для счастья 30-40 байт... Вы же знаете, как на C быстро память расходуется... ;)
Пофикшен макрос bits(), работавший не более, чем для 15 бит.
Бывает.
Добавлена константа ARDUINO с номером версии.
Я считаю - давно пора. Как бы не старалось сообщество, все равно от версии к версии происходят порой жесткие изменения (pulsein в версии 0013), которые хотелось бы контроллировать при написании кода.
Посортировали пункты в меню Tools > Boards.
Да они же целую кучу плат добавили (см. выше) - вот наверное оно распухло... Ну-ка, взглянем:
Ну просто красота. Нет предела совершенству!
Добавили "Copy to HTML".
Вот это - по-настоящему круто! Раньше для публикации я пользовался разными приблудами, в которые сначала заряжался кусок кода, отформатированный под форум Arduino. Теперь можно напрямую! Выглядит вот так:
(напрямую вставил в блог из ArduinoIDE, ничего не менял).
/*
* Blink
*
* The basic Arduino example. Turns on an LED on for one second,
* then off for one second, and so on... We use pin 13 because,
* depending on your Arduino board, it has either a built-in LED
* or a built-in resistor so that you need only an LED.
*
* http://www.arduino.cc/en/Tutorial/Blink
*/
int ledPin = 13; // LED connected to digital pin 13
void setup() // run once, when the sketch starts
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}
void loop() // run over and over again
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}
Пофикшено (вроде бы) "Couldn't determine program size".
У меня такое бывало, периодически. С чем связано - так и не смог установить со 100%-ой точностью.
Автоматическая генерация зависимостей для Makefile.
Этого тоже недоставало, когда шла работа над библиотеками... Когда один скетч - не актуально, но стоит добавить файлов - и Arduino могла просто не компильнуть нужный исходник. Приходилось сносить объектный файл вручную.
Спасибо за обзор, скачал для Ubuntu 9.04, заработало с полпинка. При условии, что все либы стояли.
ОтветитьУдалить