Ви не увійшли.
Думаю надо:
if ( inputString.length() >= max_length )
{ string_error = true; }
Да. Забыл. Кавычку одинарную уберите в if (inputString == "Rele 2"') digitalWrite(led12, HIGH); Копи паст не дремлет .
Неа...не компилится. Компилятор ругается на if ( strlen (inputString) >= max_length ) такими матюками er:57: error: cannot convert 'String' to 'const char*' for argument '1' to 'size_t strlen(const char*)'
cannot convert 'String' to 'const char*' for argument '1' to 'size_t strlen(const char*)'
Идеального не существует в природе априори . Стремится надо
Что и делаем
. Примеров в сети вагон, и тоже с кучей недостатков. Что же придется сесть с другими авторами и икать
. NoName, я не против если Вы предложите более совершенный и простой понятный алгоритм, даже приму участие
.
Да к стати, о Serial и двух вечерах убитого времени. Задача банальная. Передаю ISON строку из Arduino 2560 в ESP все путем. Возвращаю ее с изменениями обратно, и тут облом, приходит только часть. Причем обрывается по разному, увеличиваю буфер ISON - не идет. Возился долго, нудно пока не сделал подсчет байтов и тут "сюприз" - 63 байта хоть тресни. Лезу в библиотеку Serial смотрю вроде все ОК при разных объемах остатка флеша разный кольцевой буфер. Но черт возьми при загрузке в 15% Atmega2560 у меня получается 64 . Ставлю ручками 256 байт и все начало бегать как дети в школу. Вот такие бывают "сюрпризы" в библиотеках
.
NoName, да поток асинхронный, таймаут по умолчанию 1000мс ( и его всегда можно изменить ). Даже при скорости 9600 бод сколько байт придет, или может прийти учитывая какие то паузы? Правильно намного больше нежели 20 байт
. Для простых задач, типа этой, этого вполне достаточно. Если вести речь о передаче больших объемов например файла, то алгоритм ясное дело другой, это может быть проверка на полноту полученной информации по контрольной суме или другие "фантазии" программиста. Не мне Вам рассказывать
. А для передачи управляющей команды это надо? Ну получит раз на тысячу в буфере вместо "Relay 1" что то типа Rela или Pelay
. Реактивный двигатель не запуститься и спутник упадет
? А новичку само то, и "аппетит" не испортить, и в очень сложные дебри пока не влезать
(всему свое время). Я как и Вы понимаю, что в идеале можно замутить типа контроль по int как признак окончания передачи ( поскольку в передаче нельзя ничего изменить, добавить что то типа % или }). Можно читать по байтам в строку и контролировать длину. И мало что можно придумать
. Новичок сам когда то придет к этому но в других задачах
.
Никогда не снимал роликов. Но специально для Dima снял . Задело. Извиняюсь за оговорки, типа графический экран назвал символьный и др. Адрес видео
https://youtu.be/RivhKxGiPfE
Я извиняюсь, если кто то меня неправильно понял. Я ни в коем случае не хаю программу. И поверьте пиар мне совершенно не нужен. Вы не услышали главное, любой даже самый примитивный в "мыльнице" термостат будет выполнять свою функцию. И вопрос не в программе, будут ли навороты типа пид, вольтметр и пр (на кой тот вольтметр на каком то аккумуляторе если 220 нет ?). Я говорю совершенно о другом, о том что с точки зрения моего опыта не хватает этому термостату с претензией на "умный" (читай универсальный) и я думаю что и программа написана хорошо и работает (мне даже не интересно ее смотреть) важен функционал. Вопрос для меня очевиден, и в другом, для серьезного инкубатора его мало, для "коробочки" он лишний. Делать термостат для "пенопластовой коробочки" типа "наседка" и пр. но только с "моторчиком" тогда нет вопросов...А написано: "Устройство собрано и проверено. Заказал изготовление плат в Китае, на повестке дня тестирование в реальном инкубаторе. Естественно функционал будет добавляться." Следовательно речь идет о серии. Так вот если предвидится серийное производство, я и высказал то чего не хватает этому термостату. Хотите протестировать - пожалуйста, нет вопросов, только на чем? На пенопластовой коробочке? Тогда на кой пень этой коробочке вентилятор? Зачем мерить влажность, если изменить ее проблема? Я начинал с таких вот "коробочек", и могу сказать следующее, если нужно вывести цыплята дешево и сердито, идем в магазин и покупаем "коробочку", выбрасываем кондесаторный блок питания с электронного регулятора, лепим свой и все, и не паримся ( к стати посмотрите цену на т-стат Лана и прикиньте свою, а для коробочки и цыплят его хватает, разве что "моторчика нет
). Если речь идет о "серьезном" инкубаторе где уже как минимум два лотка этажеркой и предвидится вывод водоплавающей птицы то тут два пути или делается инкубатор и ТОЛЬКО ПОСЛЕ садимся и точим "железо" и программу, или сначала делается ну очень я бы сказал "гибкий" термостат со множеством настроек типа изменения дельт температур, поправочных коэффициентов и кучей датчиков. Почему да потому что в "больших" ящиках все не так просто, нужен продув нагревательного элемента где то начиная от 220 куб.м. в час, и этот нагреватель как и вентилятор должен быть как бы "снаружи" ( ремонтно- пригодным, не затрагивая камеру инкубатора), температуру выходящего воздуха нагревателя нужно контролировать (1 датчик
), температуру вверху над лотками тоже ( +1 датч.
). Изменение (повышение) влажности - кювета с теплой водой (ТЭН, вентилятор над кюветой) +1датчик
+ датчик уровня воды
.(всякие ультразвуковые увлажнители не катят проверено). Ну и датчик влажности (бонус еще имеем термометр). Это только все в общих чертах, не считая технических ньюансов типа экранов на датчики DS (иначе их показания прыгают как бешенные), поворотный механизм - концевики
Ну наконец делаем выводы, самый простой - количество лап про мини как то маловато
. Я когда первый раз столкнулся с проблемами сразу поменял на Атмегу32 ( а тоже была про мини). Некоторые давай скетч
. Да нет проблем, могу выложить только зачем? Он сам по себе не представляет ни интереса ни ценности да еще садится и писать коментарии - зря тратить время . Сделаете инкубатор и увидите что то что подходит мне, совершенно не подходит вам...
char input[20];
void setup(){
Serial.begin(9600);
}
void loop()
{
if (Serial.available() > 0)
{
Serial.readBytes( input, 20 );
String str= (String) input;
if (str == "Rele 1") digitalWrite(led11, HIGH);
if (str == "Rele 2"') digitalWrite(led12, HIGH);
if (str == "Rele 3") digitalWrite(led13, HIGH);
}
}
может где то так
"Дудкой" часто называют avrdude.exe https://ru.wikipedia.org/wiki/Avrdude. Эта программа вызывается каждый раз при записи скетча в МК через программаторы ( не через КОМ порт). Этот файл берет настройки именно с "той секции ", работа с ним напрямую (а он есть в IDE) тот еще случай (купа параметров в консольном режиме). Для упрощения "жизни" есть GUI (графический интерфейс) наберите в гугле avrdudeGUI и скачайте, посмотрите, я думаю осилите. Я ошибся, правильно не BIN файл а HEX , компилятор IDE создает его во временной директории. Как его можно найти написано например здесь : http://bsideup.blogspot.com/2010/08/hex-arduino.html
Извините, а смысл возится с этой лабудой без комп порта? А не проще ли если скетч компилируется в IDE под 32 МК нормально, то взять BIN файл с IDE, avrISP программатор и залить даже той же "дудкой" или другой прогой, которая показывает состояние фьзов МК. Тем более что рано или поздно Вы все равно упретесь в необходимость чтения и записи фьзов (все равно придется разбираться с ними, хотя бы для того что бы правильно указать их в этой секции). Это мое имхо. Вам видней.
Поскольку я в теме третий год, сразу советую DHT22 (да дорого но он того стоит) датчиков DS18B20 должно быть минимум два. Датчики ни в коем случае не заливать в эпоксидку и пр. В третьих часы ну очень желательны (да и стоят не дорого). От ШИМ отказался сразу, при испытательном прогоне. Если делать инкубатор серьезный, а самая сложная для него птица, не поверите- гусь! Сразу возникает очень сложная техническая проблема влажность 80% при 37.5С. Вентиляция, нагрев это все ерунда, решается просто. И самое главное разброс "народного" DS, для него +/- 0,2 это в порядке вещей. Готовьтесь приобрести термометр лабораторный типа ТЛ для калибровки . Сразу скажу программу здесь не смотрел, судить не буду. Первый инкубатор был сделан на 140 гусиных яиц (четыре лотка), переделывался 2 раза
. Выводной инкубатор переделывал всего один раз (уже был опыт
). На подходе на 300
И поверьте, не все просто с DS, особенно если он стоит в "потоке" от вентилятора
. Короче подводных камней столько, что программа не главное, можно сказать последнее
.
Вы хотите программировать в IDE по SPI или COM порт? Но в любом случае в board нужно дописать целую секцию, у меня такая:
##################################################
# anio32: avrnetio /w atmega32 (optiboot.c)
##################################################
anio32.name=avrnetio w/ atmega32 (optiboot.c)
anio32.build.mcu=atmega32
anio32.build.f_cpu=16000000L
anio32.build.core=avrnetio
anio32.build.variant=avrnetio
anio32.upload.protocol=stk500
anio32.upload.maximum_size=30720
anio32.upload.speed=19200
anio32.bootloader.path=optiboot
anio32.bootloader.file=optiboot_anio32.hex
# text data bss dec hex filename
# 498 0 0 498 1f2
optiboot_anio32.elf
anio32.bootloader.low_fuses=0xFF
anio32.bootloader.high_fuses=0xDA
# anio32.bootloader.extended_fuses=0x
anio32.bootloader.unlock_bits=0x0f
anio32.bootloader.lock_bits=0x3f
### for ChipKit mpide:
# anio32.platform=avr
# anio32.board=AVR_NET_IO
##################################################
Эту секцию нужно внести в board.txt который в папке hardware->avrnetio. Хотя я внес и в тот который находится в hardware->arduino . В этой секции указано все что должна знать среда IDE для программирования МК через SPI. Причем если программировать через SPI то не нужно пытаться залить boot, могут возникнуть проблемы. Во первых я точно знаю что тот файл boot который Вы указали не рабочий, фьюзы указаны в этой секции тоже не правильные ( даже у меня ). Если Вы захотите программировать АТ32 через ком порт то придется повозится. Но оно того стоит (отладка программ через Serial.print
) для начинающих незаменимая вещь
.
Я использовал АТ32 в Arduino IDE. Но делал не много не так, при помощи Atmel Studio (хотя это не принципиально) прошивал загрузчик (правда пришлось перепробовать многие, не все рабочие) при помощи STK500 (тоже не принципиально). Очень важно правильно выставить фьюзы. Также нужно в файл board в Arduino IDE внести изменения. Таким образом я получил рабочую плату которая программируется через serial. На Вашем этапе важно проверить видит ли программатор микроконтроллер, а потом двигать дальше. Дело в том что если МК уже был в работе ( в новых 32х фьюзы настроены если не ошибаюсь на 16мГц) то он может работать от внутреннего осцилятора (и кварц ему не указ). Почему не работает вариантов очень много, начиная от настройки IDE и кончая настройками MK.
Nefreemen. день добрый
"научился качественно делать, даже двухсторонние cool . Правда месяц назад принтер йокнулся sad . Надо новый покупать roll . Поэтому сейчас сделал на макетке" (с)NefreemenПП 4 класса точности 0,15 мм ( Проводник/зазор (внешние слои) - менее 0,15/0,15 мм ) пробовали вытравить ?
в принципе и 3 го хватит 0,25 мма то заказ макета простейшего выливается в 100 евро ( предподготовка, 3 дм2 минимальный заказ, не запредельно как для заводского исполнения, но по всем ящикам платы с ошибками, либо лишние %) вроде и не нужны, а выбросить жалко, да и не нужно мне 3 дм2 ) , не думаю что ситуация по цене сильно изменилась, а с хлорным железом "не дружу", если отпечатаю - сделаете?
и прайс плс огласите %)
0.15/0.15 не делал. И почти уверен что в дом. условиях это нереально, 0.25 вполне . Помочь с платами рад был бы даже за спасибо, но увы, времени нет
. Только вот после 9 вечера и имею время на свое "хобби", и то решаю опять же другую сторону той задачи. Днем механика, вечером электроника + программное обеспечение...А заводское изготовление, я знаю что дорого, оно имеет смысл только для серии.
Хоть и не молодежь . Но +! Мне за полтинник и я особо чувствую что самое ценное это время. Как пел В. Ободзинский : " А жить осталось совсем немного..." Но все равно нахожу время для того что бы "рыть" интернет в тех или иных вопросах. Я не проф. программист скорее "железячник" (окон. физмат). На этой неделе потратил 4 вечера чтобы "вьехать" как передать переменные со скетча в HTML страницу (замечу нигде на форумах не задавал никаких вопросов, gooql рулит), но нашел... И нашел замечательную библиотеку JSON. Благодаря ей переписал свой Serial parsing. Поэтому считаю что изучать новое это в любом возрасте интересно и познавательно. И заметил по жизни, что если раз или два не научился (нашел "сантехника") что то сам делать, то жизнь настойчиво подсовывает те же ситуации (возможно под другим соусом) пока не научит "чинить утюг" (наверное где то на "вверху" решили что это ты должен уметь
, может для следующей жизни
). И возвращаюсь к началу своей мысли. Время бесценно, и если оно потрачено не по своему усмотрению, то должна быть компенсация
. И только тот человек который тратит свое время, знает ему цену
.
Всем кто сталкивался с форматным выводом и парсингом будет интересно. Проверил работает через Serial и в HTML (js). Причем как в Arduino так ESP.Есть неплохое описание API. Теперь без особого напряга можно гонять почти все типы данных (включая структуры) между устройствами, жизнь налаживается . https://github.com/bblanchon/ArduinoJson
Платы мне не нужны, заказывать что бы валялись не хочется в (ближайших пол года времени точно не будет), и так всякого хлама до чертиков. Да и платы я сам научился качественно делать, даже двухсторонние . Правда месяц назад принтер йокнулся
. Надо новый покупать
. Поэтому сейчас сделал на макетке (когда будет время и куплю новый принтер переделаю
).
Да нет тут QFN. И не сложные печатки (эх было бы время ). http://geektimes.ru/post/267682/
NoName, покупал я это 2011 году обошлось тогда мне около 7500 грн. ( UPS 1400 Вт синусоида, 2 АКБ) после этого я рынок по этой теме не отслеживал, поэтому советовать не берусь . Если с паяльником дружите, могу кинуть ссылку на самостоятельное изготовление. Я и сам не против такое сделать но катастрофически не хватает времени.
Угу. Отсюда и выбор или подгонять условия эксплуатации по "рекомендациям" (что на практике почти нереально, переделка штатного ЗУ устройства, ограничение разрядных токов и прочих "условий" ). На большинстве УПСов стоит ЗУ для стэндбай режима 13.6 В и оно не понимает что после "глубокого" цикла нужно 14.8В . Несколько циклов недозаряда и простоя при 13.6 приводит к смерти (сульфатации), хотя ресурсы батареи остались, но они "замурованы". Самый простой выход сделать "нестандартное" ЗУ с режимом "лечения" и пользоваться им хотя бы раз в полтора месяца. Отсюда и обсуждение ЗУ с "мозгами" и "таблеткой". Если с "мозгами" более менее понятно: есть рекомендации производителей так и т.д. и реализация такого процесса на МК сложности не представляет. То с "таблеткой" не все так однозначно.
Ну, для многих это не "ерунда", хотя бы потому что стоимость батареи не цена рулона туалетной бумаги. Просто для примера, стоимость батареи около 200$ у меня их две, строк службы AGM заявлена 8- 10 лет при 200 циклах по 80% разряда. Реальная эксплуатация показывает что 2 года и батарей нет. Причем количество циклов тоже за 2 года ну максимум 40- 50. Почему? И что делать? Выбросить? Или искать "таблэтку" для продления жизни?
Я извиняюсь, но вопрос десульфатации выходит за рамки обсуждений данного форума, но вкратце (да простят меня посетители форума) изложу свое мнение . Первое что хочу заметить что от измерений, логов и прочих анализов результат не зависит (эмпирический подход не всегда оправдан). Второе, нужно ясно понимать что состояние батареи это первый критерий (нельзя восстановить если остались целыми только клеммы ). Третье понимание всех физических и химических процессов протекающих в батареи, а самое главное, правильное понимание таких фундаментальных понятий как энергия, элктр. поле, напряжение, ток. Если понимание, что ток - это движение заряженных частиц (электронов и ионов ( а есть ли это движение как движение
? ), о Э.Д.С. тихо улыбнусь, ( большинство" электриков" кроме расшифровки: электродвижущая сила не может сказать больше ничего). Такое понимание нужно выбросить из головы, как и всю остальную картину электрических явлений написанную в школьных учебниках. Не нужно искать сложных решений для простых вещей. Думаю Вы на правильном пути ( ну не зря же у Вас индуктивность в цепи
) есть импульс - на клеммах батареи появилось напряжения но тока в цепи нет ( в классическом понимании ) или есть? Так что такое ток
? И последнее, может Вы неправильно меня поняли когда я написал "поднял", я имел ввиду емкость. Эксперименты проводил как на батареях от УПСа ( 7ah) так и на Luxeon LX12-105FMG на последних результат хуже время работы при одинаковой нагрузке luxeon ups 2000 zx возросло в почти 6 раз, но все равно составило где то меньше 50% их емкости.
Идея с "высоковольтным" ударом абсолютно рабочая и как по мне, то самая эффективная (проверена лично, подымал герметичные 12в батареи с 2в ). Схема почти такая же, только в качестве нагрузки использую электронный балласт (стабилизатор тока на ОУ и IRF3205, использовал схему с журнала "Радио"). Стабилизатор тока избавляет от необходимости измерения тока, достаточно мерить напряжение. Схема без каких то наворотов (микроконтроллеров) обычный мультивибратор. Опытным путем подобрал частоту она оказалась в пределах 5-10 Гц ( для 7ah батарей), для других батарей думаю будет другая ( имею свои предположения о происходящих электрохимических процессах и не исключаю механические ) отсюда инфразвуковая частота. Изменение скважности (зар -розр) тоже влияет, пробовал, нужно подбирать. Все делал методом НТ года два назад ( после повторения генератора Бедини), поскольку физик по специальности то решил "пощупать" эту "свободную энергию"
. Хочу тоже все переделать, уже все по "взрослому", но руки не доходят
.
Мне показалось? Это "десульфат" по "принципу" Бедини .