С начала мене было любопытно - это чего там за поливалка такая на 28кб. Но читая далее топик и видя обрывки кода я стал догадываться в чем проблемма. Vanila, вы собираетесь учиться программировать ? Я не хочу вас обидеть или как то зацепить, просто подобного "кода" я не видал с 1986г. К сожалению вы абсолютно не владеете инструментом и какими то навоками программирования.
тем более что я хотел сделать устройство и я его сделал, а то что код занимает больше места чем мог бы - по_хре_н
Абсолютно согласен!
Да и вообще, сейчас все производители создают девайс и пускают его на рынок, а уж потом допиливают софт, улучшая производительность, энергопотребление и т.д. И очень хорошо, если нет аппаратных ляпов, которые к сожалению совсем не редкость.
А я не согласен. Надо само совершенствоваться хоть как-нибудь. Начался век недокодеров.....
Если уж не пишете на С, то пишите на Wiring аккуратно....а то сорцы проекта стыдно публиковать будет.
Я начинал с асемблера на PIC, потом С для AVR, а когда попробовал WIRING, понял, что не стоит тратить много времени, если требуется однократное выполнение простой задачи. Одно дело если Вы профи и выполняете комерческие проекты, а другое дело любитель. Подергать ножками на асме запросто, а вот инициализация сложной периферии совсем другое дело и в Wiring очень много внимания уделено библиотекам, которые очень сильно облегячают жизнь.
А насчет самообразования полностью за. Ежедневно задаваемые на этом форуме вопросы говорят о том, что народ не только не хочет познавать, но даже элементарным поиском пользоваться не хочет, видимо для них проще спросить и сидеть ждать неделю, пока кто то даст совет, который поможет, чем думать своей головой.
тем более что я хотел сделать устройство и я его сделал, а то что код занимает больше места чем мог бы - по_хре_н
Есть небольшой ньюанс. Грамотно написанная программа будет меньше по объему, как правило быстрее работать и проще в сопровождении впоследствии. А уж поверь мне - со временем появятся новые идеи, а вспомнить что для чего написано будет трудно.
В свое время писал проект по учету приватизированного жилья города. Так после сдачи проекта еще года 3 или 4 доделывал хотелки - благо код был закомментирован по самое немогу и быстро вспоминал что и зачем делал.
Я не изучал трех-томник Кнута, но как то попил с профессиональным программистом (по образованию и призванию), попутно поспрашивал про пимененные методы. Так выяснилось что в основном все положенные принципы соответствуют учению Кнута ;)
Ну и как резюме:
прежде чем садиться писать код нужно сначала положить алгоритм на бумагу, с учетом наличия функций и операторов языка. В нашем случае - это вместо линейной схемы перебора более гибко использовать циклы, уменьшить число переменных. И я уверен что после оптимизации кода еще половина памяти останется свободной ;)
Моя задача чтобы код мог делать то что мне надо, и он это делает.
Ясень пень что можно и напрямую к портам обращаться без всягих digitalwrite, можно не использовать библиотеки а самому все писать, можно все делать намного короче. Да вообще можно выкинуть ардуину, взять мк с рассыпухой и писать под нее и все будет в разы меньше и дешевле. А жсм модуль тоже не за бешенные бабки покупать а из старого телефона выпаять итд итп.
Только зачем мне человеку который вообще в первый раз видит всю эту приблуду этим заниматься?
Ну и Вы не правы, поддержке и последующему редактированию, для не программиста, гораздо больше способствуюет последовательный код без всяких малопонятных циклов, хоть это и занимает больше места.
Ну и я кристально ясно понимал что в итоге должно получится, ибо туман у меня работает уже давно и я прекрасно знаю чего там не хватает, поэтому допиливать то там особо нечего.
А товарищ сва_и_цифры_какието решил просто выепендрится, и назвать не программиста не программистом, нет бы раз уж программист с большим стажем на вопрос ответить, ан нет, заглянул, пукнул и слился))
Я самое главное написал в последнем абзаце - прежде чем писать код нужно положить алгоритм на бумагу - для ясного понимания а что собственно мы делаем.
После этого собственно кодирование - рутинная работа.
Кстати - по крайней мере на западе работа аналитика на порядки дороже обходится чем работа кодера ;)
Уважаемый vanila, я никуда не слился и сразу написал что не хотел задеть ваши нежные чувства. То что я вам указал на не владением инструментом это намек на то что не плохо бы хотя бы с языком ознакомиться, его конструкциями. Но вы ясно обозначили свою позицию - по-хер. По этому дальнейшую дискуссию считаю безсмысленной.
Уважаемый vanila, я никуда не слился и сразу написал что не хотел задеть ваши нежные чувства. То что я вам указал на не владением инструментом это намек на то что не плохо бы хотя бы с языком ознакомиться, его конструкциями. Но вы ясно обозначили свою позицию - по-хер. По этому дальнейшую дискуссию считаю безсмысленной.
с тобой она была бессмыссленна изначально, мог бы и не продолжать портить воздух.
Я самое главное написал в последнем абзаце - прежде чем писать код нужно положить алгоритм на бумагу - для ясного понимания а что собственно мы делаем.
После этого собственно кодирование - рутинная работа.
Кстати - по крайней мере на западе работа аналитика на порядки дороже обходится чем работа кодера ;)
я сначала написал главную задачу а затем подключал дополнительные модули, но конечная цель была определена заранее.
впринципе вполне удобно получилось и для новичка как мне кажется проще чем разом всю программу писать.
а можно ли отправить смс сразу 3м адресатам, не по очереди а так скзать спам рассылкой?
По очереди тремя смсками я сделал, и не линейно а циклом, как вы любите)))
Суть в том что эта смс отсылается 3м адресатам когда пропадает электричество и устройство переходит на питание от батареи и если смски отправлять поочередно то это быстрее высадит аккум.
Поэтому хочется отправлять сообщение разом всем. Это возможно?
Потому что это действительно ИСКУССТВО. И мне например приятно смотреть если не профессиональную реализацию изящного алгоритма - то хотя бы на ремесленное кодирование грамотно составленного алгоритма.
вы заигрались слишком, исскуство-шмыкуство, фигня все это. я не явление христа народу пишу, чтобы тратить на него 20 лет жизни, а фоторобот который будет простой и рабочий.
есть такой научный принцип - бритва оккама
в сущности он говорит что если в итоге результат один и тот же, то правильное решение то которое проще.
для меня, как не программиста, проще когда код линеен и последователен а посему правильный код тот который мне понятней.
а можно ли отправить смс сразу 3м адресатам, не по очереди а так скзать спам рассылкой?
По очереди тремя смсками я сделал, и не линейно а циклом, как вы любите)))
Суть в том что эта смс отсылается 3м адресатам когда пропадает электричество и устройство переходит на питание от батареи и если смски отправлять поочередно то это быстрее высадит аккум.
Поэтому хочется отправлять сообщение разом всем. Это возможно?
в общем....рассалка это не задача gsm девайса команда на отправку смс тока одна Message sending:+CMGS и не предусматривает ввода нескольких номеров.....можно конечно с Send stored message:+CMSS повозиться .но выигыш не очивиден.....тока програмно. разом не проидет не мучайся
у тебя дважды встречается код
в void prodolgitelnost_poliva_10() и void prodolgitelnost_poliva_15() сооттветственно i=10 и i=15
Буду пробовать, спасибо!
ну че скажешь? понятно что к чему?
пока ничего, мне еще разобраться надо)))
я ж написал кусок твоего кода и свои вариант к нему
просто я не программист от слова совсем, это первая программа которую я написал, а потому что бы въехать в чужой код мне нужно некоторое время))
ок чем мог ....разбирайся
пришли мне последнию версию своего кода...я сам повставляю и отошлю тебе на проверку
пришли мне последнию версию своего кода...я сам повставляю и отошлю тебе на проверку
лучше я сам, а то потом не пойму нифига.
но всеравно спасибо!)
В итоге вот такой код получился:
//задаем продолжительность полива, закрываем клапаны void prodolgitelnost_poliva(byte y) { for ( ; y!=0; y--) { lcd.setCursor(7,0); lcd.print(" "); //стираем предыдущее значение lcd.setCursor(7,0); lcd.print( String(y));// пишим количество секунд до закрытия delay (1000); } lcd.setCursor(0,0); lcd.print(" "); pcf.set(); //все i2c выходы HIGH digitalWrite (nasos,LOW); delay (3000); //пауза перед следующим поливом }плюс раскидал повторяющийся код по функциям и
и GSM заработал! Аллилуя! )))
Поздравлямс
=)
а остальное оптимизировал как я предлогал?
В итоге вот такой код получился:
//задаем продолжительность полива, закрываем клапаны void prodolgitelnost_poliva(byte y) { for ( ; y!=0; y--) { lcd.setCursor(7,0); lcd.print(" "); //стираем предыдущее значение lcd.setCursor(7,0); lcd.print( String(y));// пишим количество секунд до закрытия delay (1000); } lcd.setCursor(0,0); lcd.print(" "); pcf.set(); //все i2c выходы HIGH digitalWrite (nasos,LOW); delay (3000); //пауза перед следующим поливом }плюс раскидал повторяющийся код по функциям и
и GSM заработал! Аллилуя! )))
красиво ))))))))))))))))))))))
только повторяющийся код отдельно вынес и все
а инициализацию gsm 2 раза повторяется.......а вывод на дисплей
на 1 стр смотри
жсм вынес а вывод на дисплей оставил как есть, всеравно уже влезло а как есть понятней читается
как запрос баланса сделал ..покаж
я советую отимизировать все пока при памяти.......потом появятся еще идеи и опять начнется оптимизация
как запрос баланса сделал ..покаж
тут палка о двух концах, потом захочу прочесть код а не пойму нифика)) так что оставлю пока так
пока никак, вот пытаюсь понять как применить пока.
тут палка о двух концах, потом захочу прочесть код а не пойму нифика)) так что оставлю пока так
пока никак, вот пытаюсь понять как применить пока.
Дык а комменты зачем придуманы?
Пиши комменты на каждый чиз - без них через месяц сам не поймешь что написал!
Пример:
// назначение пинов #define TMread 2//TM key pin #define LEDclk 3//LED 1637 pin CLK #define LEDdio 4//LED 1637 pin DIO #define SoundPin 9//Звук в динамик #define pinKBx1 6 // 1 столбец кнопок #define pinKBx2 7 // 2 столбец кнопок #define pinKBx3 8 // 3 столбец кнопок #define pinKBy1 14 // 1 строка кнопок #define pinKBy2 15 // 2 строка кнопок #define pinKBy3 16 // 3 строка кнопок #define pinKBy4 17 // 4 строка кнопок // x1 x2 x3 //y1 1 2 3 //y2 4 5 6 //y3 7 8 9 //y4 A B C int melody[] = { NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4 }; // note durations: 4 = quarter note, 8 = eighth note, etc.: int noteDurations[] = { 4, 8, 8, 4, 4, 4, 4, 4 }; int TimeXX=1000; //дкелитель миллисекунд byte Seg_ON=0; //двоеточие на индикаторе byte TMbuffer[8];// буфер приема byte TMlistKEY[20][8];// 5 ключей админских и 15 игровых ключей byte PrevCMD=0;// Предыдущая команда byte NextCMD=0;// следующая команда byte ChCMD=0;// буфер считывания команды byte SetMode=0;// режим - 0 не установлен, 1 кнопки, 2 ключи byte SetTimerMode=1;// режим - 0 таймер выключен, 1 таймер включен unsigned long buffMillis=0;// буфер для расчетов unsigned long PrevMillis=0;// предыдущее время в миилсах unsigned long NextMillis=0;// следующее время в миилсах unsigned long CMDmillis[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};// следующее время в миилсах byte buffTM[8];// буфер приема ТМ-ключей byte ChemodanKey[4]={0,0,0,0}; TM1637 tm1637(LEDclk,LEDdio); OneWire ds(TMread); // выход считывателя на пин TMread void setup() // стартовая инициализация { Serial.begin(9600); //для отладки Serial.println("Start..."); //для отладки // SoundSET(); SirenaOUT(); /* Инициализация структур */ pinMode(pinKBx1, INPUT); // назначить порт ввода X1 digitalWrite(pinKBx1, HIGH); // включить подтягивающий резистор pinMode(pinKBx2, INPUT); // назначить порт ввода X2 digitalWrite(pinKBx2, HIGH); // включить подтягивающий резистор pinMode(pinKBx3, INPUT); // назначить порт ввода X3 digitalWrite(pinKBx3, HIGH); // включить подтягивающий резистор pinMode(pinKBy1, OUTPUT); // назначить порт вывода Y1 pinMode(pinKBy2, OUTPUT); // назначить порт вывода Y2 pinMode(pinKBy3, OUTPUT); // назначить порт вывода Y3 pinMode(pinKBy4, OUTPUT); // назначить порт вывода Y4 tm1637.init(); tm1637.set(5);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7; tm1637.display(0,0); //в левом сегменте 0 остальные потушены // Читаем с хранилища ключи - 20 шт 5 админских 0-4 и 15 игровых 5-20 for(byte TM1 = 0; TM1 < 20; TM1++) { for(byte TM2 = 0; TM2 < 8; TM2++) { TMlistKEY[TM1][TM2]=EEPROM.read(TM1*8+TM2); } } }не комментами едиными)
а так пишу конечно
и все таки прогресс очивиден)))))))))))
у меня еще вопрос созрел:
а можно ли отправить смс сразу 3м адресатам, не по очереди а так скзать спам рассылкой?
Доброго времени суток !
С начала мене было любопытно - это чего там за поливалка такая на 28кб. Но читая далее топик и видя обрывки кода я стал догадываться в чем проблемма. Vanila, вы собираетесь учиться программировать ? Я не хочу вас обидеть или как то зацепить, просто подобного "кода" я не видал с 1986г. К сожалению вы абсолютно не владеете инструментом и какими то навоками программирования.
я это и без тебя знаю, сказать то чо хотел?
тем более что я хотел сделать устройство и я его сделал, а то что код занимает больше места чем мог бы - по_хре_н
тем более что я хотел сделать устройство и я его сделал, а то что код занимает больше места чем мог бы - по_хре_н
Абсолютно согласен!
Да и вообще, сейчас все производители создают девайс и пускают его на рынок, а уж потом допиливают софт, улучшая производительность, энергопотребление и т.д. И очень хорошо, если нет аппаратных ляпов, которые к сожалению совсем не редкость.
А я не согласен. Надо само совершенствоваться хоть как-нибудь. Начался век недокодеров.....
Если уж не пишете на С, то пишите на Wiring аккуратно....а то сорцы проекта стыдно публиковать будет.
Я начинал с асемблера на PIC, потом С для AVR, а когда попробовал WIRING, понял, что не стоит тратить много времени, если требуется однократное выполнение простой задачи. Одно дело если Вы профи и выполняете комерческие проекты, а другое дело любитель. Подергать ножками на асме запросто, а вот инициализация сложной периферии совсем другое дело и в Wiring очень много внимания уделено библиотекам, которые очень сильно облегячают жизнь.
А насчет самообразования полностью за. Ежедневно задаваемые на этом форуме вопросы говорят о том, что народ не только не хочет познавать, но даже элементарным поиском пользоваться не хочет, видимо для них проще спросить и сидеть ждать неделю, пока кто то даст совет, который поможет, чем думать своей головой.
тем более что я хотел сделать устройство и я его сделал, а то что код занимает больше места чем мог бы - по_хре_н
Есть небольшой ньюанс. Грамотно написанная программа будет меньше по объему, как правило быстрее работать и проще в сопровождении впоследствии. А уж поверь мне - со временем появятся новые идеи, а вспомнить что для чего написано будет трудно.
В свое время писал проект по учету приватизированного жилья города. Так после сдачи проекта еще года 3 или 4 доделывал хотелки - благо код был закомментирован по самое немогу и быстро вспоминал что и зачем делал.
Я не изучал трех-томник Кнута, но как то попил с профессиональным программистом (по образованию и призванию), попутно поспрашивал про пимененные методы. Так выяснилось что в основном все положенные принципы соответствуют учению Кнута ;)
Ну и как резюме:
прежде чем садиться писать код нужно сначала положить алгоритм на бумагу, с учетом наличия функций и операторов языка. В нашем случае - это вместо линейной схемы перебора более гибко использовать циклы, уменьшить число переменных. И я уверен что после оптимизации кода еще половина памяти останется свободной ;)
Товарищи!
Моя задача чтобы код мог делать то что мне надо, и он это делает.
Ясень пень что можно и напрямую к портам обращаться без всягих digitalwrite, можно не использовать библиотеки а самому все писать, можно все делать намного короче. Да вообще можно выкинуть ардуину, взять мк с рассыпухой и писать под нее и все будет в разы меньше и дешевле. А жсм модуль тоже не за бешенные бабки покупать а из старого телефона выпаять итд итп.
Только зачем мне человеку который вообще в первый раз видит всю эту приблуду этим заниматься?
Ну и Вы не правы, поддержке и последующему редактированию, для не программиста, гораздо больше способствуюет последовательный код без всяких малопонятных циклов, хоть это и занимает больше места.
Ну и я кристально ясно понимал что в итоге должно получится, ибо туман у меня работает уже давно и я прекрасно знаю чего там не хватает, поэтому допиливать то там особо нечего.
А товарищ сва_и_цифры_какието решил просто выепендрится, и назвать не программиста не программистом, нет бы раз уж программист с большим стажем на вопрос ответить, ан нет, заглянул, пукнул и слился))
Я самое главное написал в последнем абзаце - прежде чем писать код нужно положить алгоритм на бумагу - для ясного понимания а что собственно мы делаем.
После этого собственно кодирование - рутинная работа.
Кстати - по крайней мере на западе работа аналитика на порядки дороже обходится чем работа кодера ;)
Доброго времени суток !
Уважаемый vanila, я никуда не слился и сразу написал что не хотел задеть ваши нежные чувства. То что я вам указал на не владением инструментом это намек на то что не плохо бы хотя бы с языком ознакомиться, его конструкциями. Но вы ясно обозначили свою позицию - по-хер. По этому дальнейшую дискуссию считаю безсмысленной.
Доброго времени суток !
Уважаемый vanila, я никуда не слился и сразу написал что не хотел задеть ваши нежные чувства. То что я вам указал на не владением инструментом это намек на то что не плохо бы хотя бы с языком ознакомиться, его конструкциями. Но вы ясно обозначили свою позицию - по-хер. По этому дальнейшую дискуссию считаю безсмысленной.
с тобой она была бессмыссленна изначально, мог бы и не продолжать портить воздух.
Я самое главное написал в последнем абзаце - прежде чем писать код нужно положить алгоритм на бумагу - для ясного понимания а что собственно мы делаем.
После этого собственно кодирование - рутинная работа.
Кстати - по крайней мере на западе работа аналитика на порядки дороже обходится чем работа кодера ;)
я сначала написал главную задачу а затем подключал дополнительные модули, но конечная цель была определена заранее.
впринципе вполне удобно получилось и для новичка как мне кажется проще чем разом всю программу писать.
А может всетаки кто то знает?
а можно ли отправить смс сразу 3м адресатам, не по очереди а так скзать спам рассылкой?
По очереди тремя смсками я сделал, и не линейно а циклом, как вы любите)))
Суть в том что эта смс отсылается 3м адресатам когда пропадает электричество и устройство переходит на питание от батареи и если смски отправлять поочередно то это быстрее высадит аккум.
Поэтому хочется отправлять сообщение разом всем. Это возможно?
Понимаешь, Кнут не зря назвал свою книгу ИСКУССТВО ПРОГРАММИРОВАНИЯ
https://ru.wikipedia.org/wiki/%D0%98%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%BE_%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
Потому что это действительно ИСКУССТВО. И мне например приятно смотреть если не профессиональную реализацию изящного алгоритма - то хотя бы на ремесленное кодирование грамотно составленного алгоритма.
Тебе походу это не нужно и непонятно.
Извини.
вы заигрались слишком, исскуство-шмыкуство, фигня все это. я не явление христа народу пишу, чтобы тратить на него 20 лет жизни, а фоторобот который будет простой и рабочий.
есть такой научный принцип - бритва оккама
в сущности он говорит что если в итоге результат один и тот же, то правильное решение то которое проще.
для меня, как не программиста, проще когда код линеен и последователен а посему правильный код тот который мне понятней.
А может всетаки кто то знает?
а можно ли отправить смс сразу 3м адресатам, не по очереди а так скзать спам рассылкой?
По очереди тремя смсками я сделал, и не линейно а циклом, как вы любите)))
Суть в том что эта смс отсылается 3м адресатам когда пропадает электричество и устройство переходит на питание от батареи и если смски отправлять поочередно то это быстрее высадит аккум.
Поэтому хочется отправлять сообщение разом всем. Это возможно?
типа рассылки......ат команды копать надо.......
----------------------------------------------------------------------------------------
написал...работает........радуйся)))))))))
свои грабли лучьше чужих
в общем....рассалка это не задача gsm девайса команда на отправку смс тока одна Message sending:+CMGS и не предусматривает ввода нескольких номеров.....можно конечно с Send stored message:+CMSS повозиться .но выигыш не очивиден.....тока програмно. разом не проидет не мучайся
====================
пришли пару помидорок по сезону))))))))))))))))))
Ну понятно, значит по очереди будет отправляться.
Это для зеленого черенкования, помидорки тп мы не выращиваем :)
Ну понятно, значит по очереди будет отправляться.
Это для зеленого черенкования, помидорки тп мы не выращиваем :)
запрос баланса сделал?
неа пока времени нет