[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог-RSS] [Главная]

Файл: -(109 KB, 2000x1361)
109 No.4088252  

Наверняка местные Сырны игрались в это, для /s/ и /dev/ это слишком нубская тема, так что давайте делать своих роботов и дум дей девайсы здесь. У меня сразу вопрос так как я нуб и в программировании и в электронике объясните мне почему у меня, после того как условие у while становится ложным просто на этом всё останавливается, а не идёт к следующему while?

void loop() {
while (color=1){
digitalWrite(12, HIGH);
delay(100);
digitalWrite(12, LOW);
delay(t1);
if (t1>0){t1=t1-50;}
else {color=color+1;}
}
while (color=2){
digitalWrite(11, HIGH);
delay(100);
digitalWrite(11, LOW);
delay(t2);
if (t2>0){t2=t2-50;}
else {color=color+1;}
}
while (color=3){
digitalWrite(10, HIGH);
delay(100);
digitalWrite(10, LOW);
delay(t3);
if (t3>0){t3=t3-50;}
else {color=color+1;}
}
}

>> No.4088257  
Файл: -(128 KB, 563x600)
128

>>4088252
Совершенно верно !
А ты умный вижу очень !

>> No.4088262  

>>4088252
На всякий случай опишу что я хочу сделать, есть три светодиода, хочу, чтобы сначала один мигал всё быстрее и быстрее, пока не загорится постоянно, тогда следующий начинает так же мигать, и так все три, а у меня почему-то только первый мигает, потом загорается и всё.

>> No.4088263  
Файл: -(350 KB, 900x900)
350
>почему у меня, после того как условие у while становится ложным просто на этом всё останавливается, а не идёт к следующему while?

Моя гениальность подсказывает мне, что ты что-то сделал не так, где-то накосячил.
Всегда пожалуйста.

>> No.4088273  

== вместо присваивания в условиях while?

>> No.4088277  

>>4088252
А чему равны color, t1, t2, t3 при старте? Может нужно перед циклами это прописать?

>> No.4088282  

>>4088270
Точно же, я бака, до этого знал только бейсик, там нету разницы между присваиванием и сравнением потому и забыл, что тут с этим всё сложно. И кстати, что странно, с одним светодиодом почему-то всё работало.

>> No.4088283  

>>4088282 -> >>4088273

>> No.4088284  

>>4088277
Нет, они прописываются, и равны 1000мс

>> No.4088291  

>>4088282

>И кстати, что странно, с одним светодиодом почему-то всё работало.

Насколько мне позволяет судить чтение текста и мой давний опыт плюсов, то у тебя первый цикл получается вечным. И фактически он продолжает мигать вечно также, просто в определенный момент t1 становится равным нулю и LOW момент твой глаз просто не видит.
Даже при том, что цвет увеличивается на единицу и становится 2, каждый раз цикл своей проверкой возвращает его в прежнее состояние снова.

>> No.4088325  

Попробуй это.

int color = 1;
int t1 = 500;
int t2 = 500;
int t3 = 500;
void setup() {
// put your setup code here, to run once:
pinMode (12, OUTPUT);
pinMode (11, OUTPUT);
pinMode (10, OUTPUT);
}

void loop() {

while (color==1){
digitalWrite(12, HIGH);
delay(100);
digitalWrite(12, LOW);
delay(t1);
if (t1>0){t1=t1-50;}
else {color=2;
t1=500;}
}
while (color==2){
digitalWrite(11, HIGH);
delay(100);
digitalWrite(11, LOW);
delay(t2);
if (t2>0){t2=t2-50;}
else {color=color+1;
t2=500;}
}
while (color==3){
digitalWrite(10, HIGH);
delay(100);
digitalWrite(10, LOW);
delay(t3);
if (t3>0){t3=t3-50;}
else {color=1;
t3=500;}
}
}

Код не мой, просто попросил помочь

>> No.4088334  

Зачем тебе лишняя сущность в виде переменной color? Почему неьзя проверять t1,t2 и t3 в условии цикла?

>> No.4088340  

>>4088325
Спасибо, уже разобрался, проблема была в том, что я вместо оператора сравнения использовал оператор присваивания в функции while.
>>4088334
Действительно, ну как я говорил, я нуб и первое, что пришло мне в голову это ввести дополнительную переменную.

>> No.4088357  

>>4088252
http://ideone.com/wah1km
На будущее тебе.

>> No.4088375  

>>4088357
Это онлайн тестовый режим для кода? Если там нет пошагового режима, то какой в нём смысл? Проверить на ошибки можно и в самой ардуиновской программе. Да и к тому же, язык ардуино почти си, но не совсем, и он может не понять.

>> No.4088438  

>>4088252
В вузе учили программить на atmega 32.
Помню, там надо писать на ассемблере (но ассемблер приятнее, чем masm). В ардуино тоже нужно учитывать изменения импульса на контакте?

>> No.4088442  

>>4088252
color как-то меняется в цикле?

>> No.4088543  

>>4088442
Ну вот же

>if (t1>0){t1=t1-50;}
>else {color=color+1;}

В каждом цикле while.

>> No.4088752  
Файл: -(25 KB, 300x260)
25

>>4088252

> if (t1>0){t1=t1-50;}

У тебя в редакторе пустые строчки что ли платные? Зачем всё условие пишешь в одну строку, это же реально неудобно, и выглядит к тому же отвратительно.

>> No.4088761  

>>4088752
Это, батенька, уже вкусовщина, мне так больше нравится.

>> No.4088770  

>>4088761
Enjoy your { if { else { while { if { while { if}}}}}}

>> No.4088771  

>>4088761
Это стандарты написания кода вообще-то.
Не на ычане отучат так писать, так на работе.

Помимо традиции и лёгкости чтения, переносы строк после начала и конца блока нужны для того, чтобы было легче вписывать в код новый блок.
По той же причине советую писать так:
if (no_brakets) {
rape(coder)
}

а не так:
if (no_brakets) code.pls_no()

>> No.4088779  

>>4088771
А я предпочитаю открывающую скобку на отдельной строке. Это делает код ещё более читабельным и удобным для меня.

>> No.4088831  

>>4088779
Я тоже так делал, пока на джаве писать не начал. А потом у меня хэллоуворлд в экран не влез.

>> No.4088853  

>>4088761
Я на работе за "мне так больше нравится" одну баку так заругал, что он уволился. Не будь бакой.

>> No.4088860  

>>4088752

> if (t1>0){t1=t1-50;}
>выглядит к тому же отвратительно

t1-=t1>0?50:0;

>> No.4088868  

>>4088831
Мне тут недельку пришлось на джаве поработать. Это ужасно. Вернулся на свой родненький C# со слезами радости и счастья.

>>4088860
Ардуиновская IDE вроде как тернарки не поддерживает. По крайней мере, так было раньше.

>> No.4088931  

>>4088770
Когда условие сложное и ветвистое, то тогда да, проще переносить, а когда оно вида if (x>y) {у+1} то проще, держать это на одной строчке, я не на работе, могу делать как удобней мне.

>> No.4088934  
Файл: -(118 KB, 460x690)
118

int color = 1;
int t1 = 500;
int t2 = 500;
int t3 = 500;
void setup() {
// put your setup code here, to run once:
pinMode (12, OUTPUT);
pinMode (11, OUTPUT);
pinMode (10, OUTPUT);
}

void loop() {

while (color==1){
digitalWrite(12, HIGH);
delay(100);
digitalWrite(12, LOW);
delay(t1);
if (t1>0){t1=t1-50;}
else {color=2;
t1=500;}
}
while (color==2){
digitalWrite(11, HIGH);
delay(100);
digitalWrite(11, LOW);
delay(t2);
if (t2>0){t2=t2-50;}
else {color=color+1;
t2=500;}
}
while (color==3){
digitalWrite(10, HIGH);
delay(100);
digitalWrite(10, LOW);
delay(t3);
if (t3>0){t3=t3-50;}
else {color=1;
t3=500;}
}
}

>> No.4088958  

>>4088931
{ко?гдапр))едлож{ениеко(ротк)о.ет<о}прощеп>ро{б\\/елын(е)стави&ть
йаНаииииииичянНЕвтакомслучаеятожМоГупе)))))))
}йсать..<<<..к (акУдобно!!!!!!!^^&мене)))))адругиепустьЧИтаЮТЬдаразб(ирутьсяпач)имуУм)иняНИПАлучаицца!

>> No.4089006  
Файл: -(36 KB, 353x545)
36

>>4088958
У тебя ошибка в слове МИНЕ ! ! !
А так , хороший прагромирование текст !




[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог-RSS] [Главная]