• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Szopka bożonarodzeniowa :)
#1
Witam.
Poniższy projekt ma za zadanie sterowaniem odtwarzaczem dźwięku, przekaźnikiem włączającym oświetlenie oraz trzema serwomechanizmami. Całość to szopka bożonarodzeniowa do kościoła w mojej parafii (nie śmiejcie się, wiem że to dziwna pora na robienie szopki ale robię ją w wolnym czasie a tego wolnego czasu mam niewiele i mam nadzieję że do grudnia zdążę).
Krótki opis wejść i wyjść.
Wejście jest tylko jedno  - A1
Wyjście dla odtwarzacza dźwięku - D2
Wyjście dla przekaźnika oświetlenia – D3
Wyjście dla serwomechanizmu 1 – D4
Wyjście dla serwomechanizmu 2 – D5
Wyjście dla serwomechanizmu 3 – D6
 
Prośba.
W tej chwili program działa tak, że zmiana na wejściu A1 powoduje kolejno
1. podanie stanu wysokiego na D2 na określony czas i przejście w stan niski
2. podanie stanu wysokiego na D3
3. sterowanie kolejno serwomechanizmami 1, 2 i 3 według określonych parametrów.
4. podanie stanu niskiego na D3
 
Chciałbym żeby niezależnie od tego czy program się już w całości wykonał czy nie, punk 1 (czyli podanie stanu wysokiego na odtwarzacz dźwięku i jego wyłączenie) wykonywał się zawsze gdy na A1 nastąpi zmiana.
Czyli zawsze po tym jak w podłączonej do A1 bramce fotooptycznej pojawi się przeszkoda zostanie podany stan wysoki dla odtwarzacza dźwięku niezależnie czy program jest w wykonywania zadań z punktu 2, 3, 4.

Bardzo byłbym wdzięczny za pomoc gdyż syn który pisał mi ten kod mówi że nie ma możliwości żeby tak to działało.

Oto mój kod:
Kod:
const int czasbogzaplac=8000;

#include <Servo.h>

Servo myservo,myservo2,myservo3;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int poz = 0;
int koniec=0;
bool kalibracja=1;
void setup() {
 myservo.attach(4); // servomotor 1
 myservo2.attach(6); // servomotor 2
  myservo3.attach(5); // servomotor 3
  pinMode(3,OUTPUT);  // światło
  pinMode(2,OUTPUT);  // odtwarzacz dźwięku
}
void loop() {
 if(kalibracja)
 {
   myservo.write(2);
    myservo2.write(85);
    myservo3.write(60);
    delay(3000);
    kalibracja=0;
 }
 if(analogRead(1)>100)// bramka fotooptyczna
 {
   digitalWrite(2,HIGH);
   delay(czasbogzaplac);
   digitalWrite(2,LOW);
   digitalWrite(3,HIGH);
 for(int i=2;i<=80;i++)
 {
   myservo.write(i);
   delay(20);
 }
 delay(1000);
 myservo2.write(85);
 for(int i=85;i>=40;i--)
 {
   myservo2.write(i);
   delay(25);
 }
 delay(1000);
 for(int j=0;j<4;j++)
 {
     myservo3.write(60);
     for(int i=60;i<=70;i++)
 {
   myservo3.write(i);
   delay(40);
 }for(int i=70;i>50;i--)
 {
   myservo3.write(i);
   delay(40);
 }
 for(int i=50;i<=60;i++)
 {
   myservo3.write(i);
   delay(40);
 }
 myservo3.write(60);
 }
 delay(1000);
 for(int i=40;i<=85;i++)
 {
   myservo2.write(i);
   delay(25);
 }
 delay(1000);
 for(int i=80;i>2;i--)
 {
   myservo.write(i);
   delay(20);
 }
 myservo.write(2);
 digitalWrite(3,LOW);
 koniec++;
 }
 }
 
Odpowiedź
  


Wiadomości w tym wątku
Szopka bożonarodzeniowa :) - przez wieslaw3 - 07-05-2018, 14:59
RE: Szopka bożonarodzeniowa :) - przez es2 - 07-05-2018, 18:23

Skocz do:


Przeglądający: 1 gości