Как сделать чтобы одна часть кода работала, а вторая нет
- Войдите на сайт для отправки комментариев
Ср, 15/04/2015 - 00:31
Помогите обьеденить функции, я новичек поэтому не ругайтесь
Нужно сделать так чтобы в коде:
int val=0;
int sensePin =2;
int ledPin = 8;
int ledPin1 = 9;
int ledPin2 = 10;
int ledPin3 = 11;
void setup()
{ pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
void loop()
{digitalWrite(8,HIGH);
delay(3);
digitalWrite(8,LOW);
delay(3);
digitalWrite(9,HIGH);
delay(3);
digitalWrite(9,LOW);
delay(3);
digitalWrite(10,HIGH);
delay(3);
digitalWrite(10,LOW);
delay(3);
digitalWrite(11,HIGH);
delay(3);
digitalWrite(11,LOW);
delay(3);
}
Работала вот эта часть 10 секунд:
{digitalWrite(8,HIGH);
delay(3);
digitalWrite(8,LOW);
delay(3);
digitalWrite(9,HIGH);
delay(3);
digitalWrite(9,LOW);
delay(3);
digitalWrite(10,HIGH);
delay(3);
digitalWrite(10,LOW);
delay(3);
digitalWrite(11,HIGH);
delay(3);
digitalWrite(11,LOW);
delay(3);
потом весь код замер, через 10 секунд она снова включилась
Из 16 строки фигурную скобку переместите в конец 15-й
millis изучите.
Если предыдущее значение миллис меньше текущего на 10000, то 10 секунд прошло.
Проверку этого поместите в между 15 и 16 строками.выпроняйте весь остальной код если выполняется необходимое условие. Если нет просто опрашивайте миллис.
Из 16 строки фигурную скобку переместите в конец 15-й
millis изучите.
Если предыдущее значение миллис меньше текущего на 10000, то 10 секунд прошло.
Проверку этого поместите в между 15 и 16 строками.выпроняйте весь остальной код если выполняется необходимое условие. Если нет просто опрашивайте миллис.
сделал вот так - не работает(( чето я совсем не понимаю как, если вам не трудно напишите как правильно
int val=0; int sensePin =2; int ledPin = 8; int ledPin1 = 9; int ledPin2 = 10; int ledPin3 = 11; unsigned long time; void setup() { pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); } void loop() {{ Serial.print("Time: "); time = millis(); Serial.println(time); delay(1); digitalWrite(8,HIGH); delay(3); digitalWrite(8,LOW); delay(3); digitalWrite(9,HIGH); delay(3); digitalWrite(9,LOW); delay(3); digitalWrite(10,HIGH); delay(3); digitalWrite(10,LOW); delay(3); digitalWrite(11,HIGH); delay(3); digitalWrite(11,LOW); } }Из 16 строки фигурную скобку переместите в конец 15-й
millis изучите.
Если предыдущее значение миллис меньше текущего на 10000, то 10 секунд прошло.
Проверку этого поместите в между 15 и 16 строками.выпроняйте весь остальной код если выполняется необходимое условие. Если нет просто опрашивайте миллис.
Или например, скажите, есть такая функция которая делает например так : повторить 100 раз, а потом выполнить следующее действие.
Или например, скажите, есть такая функция которая делает например так : повторить 100 раз, а потом выполнить следующее действие.
Функцию зовут: переменная-счетчик+оператор if , для более узкого применения оператор for .
Вы вызвали количество миллисекунд с момента ресета и посмотрели на него. Однако не сформировали никаких условий и не предприняли никаких проверок этих условий, чтобы предпринять на их основании действия.
не пытайтесть сразу писать программу . Составте алгоритм из строк - описанийдействий - словестных для начала и проверьте логику и понимание что же именно Вы будете потом кодить.
кстати на ледах Вы не успеете ничего глазом увидеть. А видеть наверно хотели волну вспышек...
#define ledPin 8 #define ledPin1 9 #define ledPin2 10 #define ledPin3 11 int val=0; int sensePin =2; void setup() { pinMode(ledPin, OUTPUT); pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); } void loop(){ if ( millis()%20000 < 10000){ //20000 - период, 10000- время работы digitalWrite(ledPin,HIGH); delay(3); digitalWrite(ledPin,LOW); delay(3); digitalWrite(ledPin1,HIGH); delay(3); digitalWrite(ledPin1,LOW); delay(3); digitalWrite(ledPin2,HIGH); delay(3); digitalWrite(ledPin2,LOW); delay(3); digitalWrite(ledPin3,HIGH); delay(3); digitalWrite(ledPin3,LOW); delay(3); } }#define ledPin 8 #define ledPin1 9 #define ledPin2 10 #define ledPin3 11 int val=0; int sensePin =2; void setup() { pinMode(ledPin, OUTPUT); pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); } void loop(){ if ( millis()%20000 < 10000){ //20000 - период, 10000- время работы digitalWrite(ledPin,HIGH); delay(3); digitalWrite(ledPin,LOW); delay(3); digitalWrite(ledPin1,HIGH); delay(3); digitalWrite(ledPin1,LOW); delay(3); digitalWrite(ledPin2,HIGH); delay(3); digitalWrite(ledPin2,LOW); delay(3); digitalWrite(ledPin3,HIGH); delay(3); digitalWrite(ledPin3,LOW); delay(3); } }Спасибо за код, работает все - но работает все вместе, я добавил вот такую штуку
#define ledPin 8 #define ledPin1 9 #define ledPin2 10 #define ledPin3 11 #define ledPin4 3 int val=0; int sensePin =2; void setup() { pinMode(ledPin, OUTPUT); pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); } void loop(){ if ( millis()%20000 < 10000){ //20000 - период, 10000- время работы digitalWrite(ledPin,HIGH); delay(3); digitalWrite(ledPin,LOW); delay(3); digitalWrite(ledPin1,HIGH); delay(3); digitalWrite(ledPin1,LOW); delay(3); digitalWrite(ledPin2,HIGH); delay(3); digitalWrite(ledPin2,LOW); delay(3); digitalWrite(ledPin3,HIGH); delay(3); digitalWrite(ledPin3,LOW); delay(3); } digitalWrite(ledPin4,HIGH); delay(10); digitalWrite(ledPin4,LOW); delay(10); }и у меня работает весь код целиком, а мне нужно чтобы работала сначало это часть кода 10 секунд
if ( millis()%20000 < 10000){ //20000 - период, 10000- время работыdigitalWrite(ledPin,HIGH); delay(3); digitalWrite(ledPin,LOW); delay(3); digitalWrite(ledPin1,HIGH); delay(3); digitalWrite(ledPin1,LOW); delay(3); digitalWrite(ledPin2,HIGH); delay(3); digitalWrite(ledPin2,LOW); delay(3); digitalWrite(ledPin3,HIGH); delay(3); digitalWrite(ledPin3,LOW); delay(3);потом вот эта
digitalWrite(ledPin4,HIGH); delay(10); digitalWrite(ledPin4,LOW); delay(10);потом пауза например 30 сек
А если немного подумать??
#define ledPin 8 #define ledPin1 9 #define ledPin2 10 #define ledPin3 11 #define ledPin4 3 int val=0; int sensePin =2; long Period =45000; //период 45с void setup() { pinMode(ledPin, OUTPUT); pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); } void loop(){ long CurrntMsInPeriod = millis()%Period; if ( CurrntMsInPeriod < 10000){ //10c- время работы с начала цикла. digitalWrite(ledPin,HIGH); delay(3); digitalWrite(ledPin,LOW); delay(3); digitalWrite(ledPin1,HIGH); delay(3); digitalWrite(ledPin1,LOW); delay(3); digitalWrite(ledPin2,HIGH); delay(3); digitalWrite(ledPin2,LOW); delay(3); digitalWrite(ledPin3,HIGH); delay(3); digitalWrite(ledPin3,LOW); delay(3); } if ( CurrntMsInPeriod >= 10000 && CurrntMsInPeriod < 15000){ //5c- время работы с 10 по 15-ю секунду. digitalWrite(ledPin4,HIGH); delay(10); digitalWrite(ledPin4,LOW); delay(10); } }