Я в программирование мало понимаю. Вряд ли переменная i меняет тип данных - она живёт только внутри цикла. Можно объявить её глобально и посмотреть на изменения. Можно погонять другие типы и поискать закономерность. Здесь не важны сами числа (их внешний вид), важны закономерности меж ними.
Всё точно легло, с byte тоже. Всё работает. Нюансы оставим знатокам
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
while(!Serial);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("Start");
for (unsigned int i=0;;i++){
Serial.println((unsigned int)i);
}
Serial.println("End");
}
Да, когда переменную счетчика цикла объявляешь глобально, то всё работает корректно:
Судя по всему, глюк (если это действительно глюк, а не “так и задумано”) происходит только если тип данных счетчика объявляешь локально в цикле. Ну не знаю, как тогда живут большие проекты в Ардуино? Умумукаешься все счетчики циклов в глобальные переменные засовывать…
Гм… Не знал… А что, так можно было? Надо подумать. Просто все кричали “Ардуино, Ардуино”. Я и пошёл куда все кричали. За мысль спасибо. Но мне, по большому счету, важно решить свою конкретную задачу. Нано вроде мелкая, дешёвая и простая. Я её выбрал исключительно из-за габаритов.
Я не думаю пока, что это глюк. Печать в монитор порта мне не последняя истина. Вот если выставить условие , что при (int) i >33… тысяч включить светодиод … и он включится тогда да! - поломатая система
так вы не пишите циклов с выходом за пределы - и не надо будет обьявлять переменные глобально…
А то вы сначала сами выстрелили себе в ногу - а потом удивляетесь что полис ОМС вас от травмы не защитил
ТС как ГУРУ VB - может покажет нам код, который крутится … хотя бы в двух бесконечных циклах ОДНОВРЕМЕННО ???
Вы уже обделались по горло … хотите с головой ?
Хотите реальный “Крышеснос Форте”?
Попробуйте решить две задачи, которые я привёл в стартовом посте вот этой темы. Это реально крышесносные задачи!
У меня в VB никогда не стояла задача делать бесконечные циклы. В моих задачах это не нужно. У любого процесса должны быть начало и конец. Если программа входит в бесконечный цикл - это уже ошибка и недопустимая ситуация. И что-то мне представляется, что написать код на VB, который бы крутился в двух бесконечных циклах одновременно - задача невыполнимая. Так что наверное я в этом вопросе не гуру. Покажите вы, если можете. Я с удовольствием поучусь у вас. Простая логика подсказывает, что если я один бесконечный цикл вложу в другой, то крутиться буду бесконечно только во внутреннем бесконечном цикле, и во внешний никогда не вернусь. Но я для таких задач недостаточно квалифицирован. А зачем на практике могут понадобиться два таких цикла?
хорошая тема.
Клапауций тогда правильно сказал про новичков
без разговоров сбрасывать в пропасть.
Вы же написали … По ходу одного бесконечного будет достаточно !!!
Продолжаешь чудить? Сколько можно бред генерировать?
Ну так вот твой стартовый код и есть ошибка и недопустимая ситуация
Я так думаю, что это кто-то из “гуру” сидит и генерит бред с ЧатГПТ от имени ТС. Уж больно похоже на итерации генерирующей нейросетки… стоит задуматься. Просто проследите ответы ТС, И как следующий бред корректируется замечаниями участников.
я солидарен, и думаю этот “цирк” давно пора закончить.
Как ТС, я бы с удовольствием закрыл тему. Я просил администратора вообще удалить её (как и вторую свою тему), но он не захотел.
void setup (void) {
Serial.begin(115200);
for(int i=0;;i++){
Serial.println(i);
if(i>33000){Serial.println("Катастрофа!");return;}
}
}
void loop(void) {
delay(1000);
Serial.println("Это конец!");
}
//Это жизнь...
void setup (void) {
Serial.begin(9600);
for(byte i=0;;i++){//мечты
Serial.println(i);//...пролетает
if(i>random(60,100)){return;}//реальность
}
}
void loop(void) {
Serial.println("Всё!");
while(1){}
}
Посмотри, как “под капотом” реализована функция main() в Ардуинах
// Weak empty variant initialization function.
// May be redefined by variant files.
void initVariant() __attribute__((weak));
void initVariant() { }
/*
* \brief Main entry point of Arduino application
*/
int main( void )
{
init();
initVariant();
delay(1);
#if defined(USBCON)
USBDevice.attach();
#endif
setup();
for (;;)
{
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}
17 строка - страшный сон и недопустимая ситуация для true VB-шника. Делать тебе в Ардуинах нечего тогда.