Слизал чужой скетч, поменял только номера портов и не работает теперь, проблема такая впервые, может кто найдёт ошибку?
- Войдите на сайт для отправки комментариев
int led1 = 11;
int led2 = 10;
int led3 = 9;
//int buttonPin = 6;
int val=0, stope=1;
long previousMillis = 0;
int buttonState = 0;
long interval = 300;
void setup() {
Serial.begin(9600);
delay(2);
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
pinMode (led3, OUTPUT);
//pinMode (buttonPin, INPUT);
digitalWrite(6, LOW);
attachInterrupt(0, buttonPin, FALLING);
while(!Serial);
}
void one()
{
while(stope==1)
{
Serial.println(val);
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
delay(300);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(300);
if(Serial.available() > 0) stope = Serial.parseInt();
}
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
void two()
{
while(stope==1)
{
digitalWrite(led1, HIGH);
delay(40);
digitalWrite(led1, LOW);
delay(40);
digitalWrite(led1, HIGH);
delay(40);
digitalWrite(led1, LOW);
delay(40);
digitalWrite(led1, HIGH);
delay(40);
digitalWrite(led1, LOW);
delay(40);
digitalWrite(led1, HIGH);
delay(40);
digitalWrite(led1, LOW);
delay(40);
digitalWrite(led1, HIGH);
delay(40);
digitalWrite(led1, LOW);
delay(40);
digitalWrite(led2, HIGH);
delay(40);
digitalWrite(led2, LOW);
delay(40);
digitalWrite(led2, HIGH);
delay(40);
digitalWrite(led2, LOW);
delay(40);
digitalWrite(led2, HIGH);
delay(40);
digitalWrite(led2, LOW);
delay(40);
digitalWrite(led2, HIGH);
delay(40);
digitalWrite(led2, LOW);
delay(40);
digitalWrite(led2, HIGH);
delay(40);
digitalWrite(led2, LOW);
delay(40);
if(Serial.available() > 0) stope = Serial.parseInt();
}
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
void three()
{
while(stope==1)
{
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
delay(40);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
delay(40);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
delay(40);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
delay(40);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
delay(40);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
delay(40);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
delay(40);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
delay(40);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
delay(40);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
delay(40);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
delay(40);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
delay(500);
if(Serial.available() > 0) stope = Serial.parseInt();
}
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
void smooth()
{
while(stope==1)
{
for(int i=0; i<=255; i++){analogWrite(led1, i);delay(5);}
for(int k=255; k>=0; k--){analogWrite(led1, k); delay(5);}
for(int i=0; i<=255; i++){analogWrite(led2, i);delay(5);}
for(int k=255; k>=0; k--){analogWrite(led2, k); delay(5);}
for(int i=0; i<=255; i++){analogWrite(led3, i);delay(5);}
for(int k=255; k>=0; k--){analogWrite(led3, k); delay(5);}
if(Serial.available() > 0) stope = Serial.parseInt();
}
}
void smooth2()
{
while(stope==1)
{
for(int i=0; i<=255; i++){analogWrite(led1, i);delay(5);}
for(int i=0; i<=255; i++){analogWrite(led2, i);delay(5);}
for(int k=255; k>=0; k--){analogWrite(led1, k); delay(5);}
for(int k=255; k>=0; k--){analogWrite(led2, k); delay(5);}
for(int i=0; i<=255; i++){analogWrite(led3, i);delay(5);}
for(int i=0; i<=255; i++){analogWrite(led3, i);delay(5);}
if(Serial.available() > 0) stope = Serial.parseInt();
for(int i=0; i<=255; i++){analogWrite(led1, i);delay(5);}
for(int i=0; i<=255; i++){analogWrite(led3, i);delay(5);}
for(int i=0; i<=255; i++){analogWrite(led3, i);delay(5);}
}
}
void smooth3()
{
while(stope==1)
{
for(int i=0; i<=255; i++){analogWrite(led1, i);analogWrite(led2, i);delay(5);}
for(int k=255; k>=0; k--){analogWrite(led2, k);analogWrite(led2, k);delay(5);}
for(int i=0; i<=255; i++){analogWrite(led3, i);analogWrite(led3, i);delay(5);}
if(Serial.available() > 0) stope = Serial.parseInt();
}
}
void loop() {
if(Serial.available() > 0) val = Serial.parseInt();
switch(val)
{
case 1:stope=1; one();break;
case 2:stope=1; two();break;
case 3:stope=1; three();break;
case 4:stope=1; smooth();break;
case 5:stope=1; smooth2();break;
case 6:stope=1; smooth3();break;
}
}
void buttonPin()
{
static unsigned long millis_prev;
if(millis()-1000 > millis_prev)
{
stope=1;
delay(50);
val++;
delay(50);
stope=0;
Serial.println(val);
if(val==7)val=0;
}
millis_prev = millis();
}
А афтар чо говорит?
Хотя... оно в таком виде не должно проходить дальше компилятора.
int buttonPin может быть только 2 судя по номеру прерывания :)
а где строчка с номером прерывания? извиняюсь за техническую неграммотность, я просто из деревни
строка с номером хз
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
извиняюсь за техническую неграммотность, я просто из деревни
если нифига не понимаешь - зачем было порты менять?
Для модуляции ШИМ сигнала и увеличения количества светодиодов. Кстати спасибо Valera19701, я переключил кнопку на второй порт и всё заработало