Может и работают, весь цикл не крутил. Только первым зажигается светодиод на ноге 12 (да это и не важно), но делает он это через 20 сек после запуска. А в течении этих 20 - ти секунд, полная тишина.
Спасибо всем за помощь. Я уже что хотел, сделал (необходимый минимум). И получилось, как мне кажется. интереснее "семикопирования". Это была моя первая самоделка в этой области. По этому, теперь смотрю что здесь пишут, "из любви к искусству". И занялся самоделкой №2
Мне интересно так ли это? Должна была быть разница в несколько байт.
Ну, если я ничего не пропустил, то разница там только в типах переменных в первых трёх строках. Всё? Другой нету? Если так, тот нет, не должно быть разницы, он их все подставил в места использования, предварительно преобразовав к нужному типу.
Мне интересно так ли это? Должна была быть разница в несколько байт.
Ну, если я ничего не пропустил, то разница там только в типах переменных в первых трёх строках. Всё? Другой нету? Если так, тот нет, не должно быть разницы, он их все подставил в места использования, предварительно преобразовав к нужному типу.
Да, ничего не пропустили. То есть оптимизатор. Спасибо. Но я (последнее время) стараюсь не "полагаться". Все равно было интересно понять. Спасибо Евгений Петрович. Дополнительные знания. Не всегда оптимизатор так делает.
"Зато дёшево, надёжно и практично.")
Serial.println(F(NAME " " VERSION " " __DATE__ " " __TIME__));
Давеча человек прислал 3 скетча, не помнит какой рабочий... И, вроде бы, грамотно написано, но никаких следов о номере версии.(
int FRWD=12; int REV=13; int Start_Butt=11; byte counter=0; byte count=0; bool forvard=true; bool _Stop=false; unsigned int _timer; void setup() { Serial.begin(115200); pinMode(FRWD, OUTPUT); pinMode(REV, OUTPUT); pinMode(Start_Butt, INPUT_PULLUP); } void work() {count++; byte k; k=(_Stop?2:40); if(count>=k) {if(_Stop) {_Stop=false; digitalWrite((forvard?FRWD:REV),HIGH); forvard=!forvard; count=0; counter++; } else { digitalWrite(REV,LOW); digitalWrite(FRWD,LOW); _Stop=true; count=0; } } } void loop() { if (millis()-_timer>=50&&counter<15) {_timer=millis(); work(); } if(counter>15&&!digitalRead(Start_Butt)) {counter=0; _Stop=false; forvard=false; } }int FRWD=12; int REV=13; int Start_Butt=11; byte counter=0; byte count=0; bool forvard=true; bool _Stop=false; unsigned long _timer; void setup() { Serial.begin(115200); pinMode(FRWD, OUTPUT); pinMode(REV, OUTPUT); pinMode(Start_Butt, INPUT_PULLUP); } void work() {count++; byte k; k=(_Stop?2:40); if(count>=k) {if(_Stop) {_Stop=false; digitalWrite((forvard?FRWD:REV),HIGH); forvard=!forvard; count=0; counter++; } else { digitalWrite(REV,LOW); digitalWrite(FRWD,LOW); _Stop=true; count=0; } } } void loop() { if (millis()-_timer>=500&&counter<15) {_timer=millis(); work(); } if(counter>15&&!digitalRead(Start_Butt)) {counter=0; _Stop=false; forvard=false; } }Да бывает, хотя на данный момент работает:( К нам, сирым, ардуина снисходительна
Интересно, это так оптимизатор сработал?
Исходное:
int FRWD = 12; int REV = 13; int Start_Butt = 11; byte counter = 0; byte count = 0; bool forvard = true; bool _Stop = false; unsigned long _timer; void setup() { Serial.begin(115200); pinMode(FRWD, OUTPUT); pinMode(REV, OUTPUT); pinMode(Start_Butt, INPUT_PULLUP); } void work() { count++; byte k; k = (_Stop ? 2 : 40); if (count >= k) { if (_Stop) { _Stop = false; digitalWrite((forvard ? FRWD : REV), HIGH); forvard = !forvard; count = 0; counter++; } else { digitalWrite(REV, LOW); digitalWrite(FRWD, LOW); _Stop = true; count = 0; } } } void loop() { if (millis() - _timer >= 500 && counter < 15) { _timer = millis(); work(); } if (counter > 15 && !digitalRead(Start_Butt)) { counter = 0; _Stop = false; forvard = false; } }"Подпиленное":
uint8_t FRWD = 12; uint8_t REV = 13; uint8_t Start_Butt = 11; uint8_t counter = 0; uint8_t count = 0; bool forvard = true; bool _Stop = false; uint32_t _timer; void setup() { Serial.begin(115200); pinMode(FRWD, OUTPUT); pinMode(REV, OUTPUT); pinMode(Start_Butt, INPUT_PULLUP); } void work() { count++; uint8_t k; k = (_Stop ? 2 : 40); if (count >= k) { if (_Stop) { _Stop = false; digitalWrite((forvard ? FRWD : REV), HIGH); forvard = !forvard; count = 0; counter++; } else { digitalWrite(REV, LOW); digitalWrite(FRWD, LOW); _Stop = true; count = 0; } } } void loop() { if (millis() - _timer >= 500 && counter < 15) { _timer = millis(); work(); } if (counter > 15 && !digitalRead(Start_Butt)) { counter = 0; _Stop = false; forvard = false; } }ЗЫ: В код не вникал, просто эксперимент.
Это не оптимизатор это защита от дурака(ов) ;) А эти каракули работают стопудово даже не подпилинные на MEGA 2560
Может и работают, весь цикл не крутил. Только первым зажигается светодиод на ноге 12 (да это и не важно), но делает он это через 20 сек после запуска. А в течении этих 20 - ти секунд, полная тишина.
МА в течении этих 20 - ти секунд, полная тишина.
Вам в #24 сказано как сделать, Вы не слушаете - дело Ваше.
Евгений Петрович, слишком просто для Вас, но можете свой комментарий оставить по поводу #55?
Мне интересно так ли это? Должна была быть разница в несколько байт.
Спасибо всем за помощь. Я уже что хотел, сделал (необходимый минимум). И получилось, как мне кажется. интереснее "семикопирования". Это была моя первая самоделка в этой области. По этому, теперь смотрю что здесь пишут, "из любви к искусству". И занялся самоделкой №2
Советую пользоваться препроцессором, что бы явно было видно что изменено.
Советую пользоваться препроцессором, что бы явно было видно что изменено.
Если ответ мне, то я не умею ((. Что почитать?
Почитать гугль хотя бы.
Почитать гугль хотя бы.
Отлично! Я это немного знаю. Но как это мне поможет с вопросом в #55?
Блин. Ну видно же будет что подпилено. И самому видно, и для людей удобно.
Так я должен или глазами сравнивать, или грузить в редактор.
Мне интересно так ли это? Должна была быть разница в несколько байт.
Ну, если я ничего не пропустил, то разница там только в типах переменных в первых трёх строках. Всё? Другой нету? Если так, тот нет, не должно быть разницы, он их все подставил в места использования, предварительно преобразовав к нужному типу.
Мне интересно так ли это? Должна была быть разница в несколько байт.
Ну, если я ничего не пропустил, то разница там только в типах переменных в первых трёх строках. Всё? Другой нету? Если так, тот нет, не должно быть разницы, он их все подставил в места использования, предварительно преобразовав к нужному типу.
Да, ничего не пропустили. То есть оптимизатор. Спасибо. Но я (последнее время) стараюсь не "полагаться". Все равно было интересно понять. Спасибо Евгений Петрович. Дополнительные знания. Не всегда оптимизатор так делает.
Почитать гугль хотя бы.
Это непрактично.
"Зато дёшево, надёжно и практично.")
Serial.println(F(NAME " " VERSION " " __DATE__ " " __TIME__));
Давеча человек прислал 3 скетча, не помнит какой рабочий... И, вроде бы, грамотно написано, но никаких следов о номере версии.(