08-05-2019, 00:31
Jestem początkujący ale kiedyś programowałem w FORTRAN
int i=0;
void setup() {
// put your setup code here, to run once:
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
Serial.begin(9600);
Serial.print(i);
}
void loop() {
// put your main code here, to run repeatedly:
while(i<=255&&digitalRead(2)==LOW){
analogWrite(9, i);
if(digitalRead(2)==LOW)(i=i+1);
delay(10);
}
while(i>=0&&digitalRead(3)==LOW){
analogWrite(9, i);
if(digitalRead(3)==LOW)(i=i-1);
delay(10);
}
}
Jeżeli na pinie 2 mam stan niski program mi ładnie rozjaśnia żarówkę jeśli podczas rozjaśniania zdejmę LOW z pin 2 to proces się zatrzymuje. Jeśli na pinie 3 dam stan niski proces zachodzi odwrotnie. Dzięki warunkowi "while" mogłem "wizualnie" zatrzymać efekt ale pętla loop cały czas działa. Gdzie należy umieścić "Serial.print(i)" aby wyświetlić aktualną wartość "i" po zatrzymaniu. Czy da się zapisać tak kod aby program wykonał operację tylko raz?
int i=0;
void setup() {
// put your setup code here, to run once:
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
Serial.begin(9600);
Serial.print(i);
}
void loop() {
// put your main code here, to run repeatedly:
while(i<=255&&digitalRead(2)==LOW){
analogWrite(9, i);
if(digitalRead(2)==LOW)(i=i+1);
delay(10);
}
while(i>=0&&digitalRead(3)==LOW){
analogWrite(9, i);
if(digitalRead(3)==LOW)(i=i-1);
delay(10);
}
}
Jeżeli na pinie 2 mam stan niski program mi ładnie rozjaśnia żarówkę jeśli podczas rozjaśniania zdejmę LOW z pin 2 to proces się zatrzymuje. Jeśli na pinie 3 dam stan niski proces zachodzi odwrotnie. Dzięki warunkowi "while" mogłem "wizualnie" zatrzymać efekt ale pętla loop cały czas działa. Gdzie należy umieścić "Serial.print(i)" aby wyświetlić aktualną wartość "i" po zatrzymaniu. Czy da się zapisać tak kod aby program wykonał operację tylko raz?