Brojač proizvoda na proizvodnoj traci

Što ćemo naučiti:

– Ispitati stanja dva tipkala
– Ispisati stanja tipkala pomoću Serial monitor alata

Zadatak

Na mikrokontroler spojite tipkala i jednu svjetleću diodu. Zamislite da je prvo tipkalo senzor proizvoda na proizvodnoj traci prije pakiranja proizvoda u kutije, a da je svjetleća dioda pokazatelj da se proizvodna traka kreće. Proizvodi se pakiraju u kutije po 6 proizvoda. Pritiskom na tipkalo simulirajte prolazak proizvoda na traci. Napišite program koji upravlja radom proizvodne trake na sljedeći način: pokretna traka je uključena sve dok senzor proizvoda (prvo tipkalo) ne prođe 6 proizvoda. Tada se proizvodna traka zaustavlja (isključuje se svjetleća dioda) do dolaska radnika. Kako se radnik nalazi na udaljenom mjestu potrebno je serijskom vezom radniku poslati na računalo obavijest “PROIZVODNA KUTIJA JE NAPUNJENA”. Kada radnik dođe do proizvodne trake i ukloni kutiju proizvoda proizvodna linija se može ponovno pokrenuti. Ponovno pokretanje proizvodne linije izvršava radnik pritiskom na drugo tipkalo. U tom se slučaju na računalo serijskim putem šalje poruka “PROIZVODNA TRAKA JE U POGONU”. Po uključivanju mikrokontrolera proizvodna se traka ne smije pokrenuti dok radnik ne pritisne tipkalo za pokretanje trake.

Prikaz spajanja

Arduino kod


int led = 6;                            //definiraj led = 6
int tipkalo1 = 10;                       //definiraj tipkalo1 = 10
int tipkalo2 = 11;                      //definiraj tipkalo2 = 11
int brojac = 0;                         //definiraj brojac = 0

void setup() {
  pinMode(led, OUTPUT);                 //postavi izvod led kao izlazni
  pinMode(tipkalo1, INPUT_PULLUP);      //postavi izvod tipkalo1 kao ulazni
  pinMode(tipkalo2, INPUT_PULLUP);      //postavi izvod tipkalo2 kao ulazni
  digitalWrite(led, LOW);               //isključi led diodu - početno stanje
  Serial.begin(9600);                   //inicijalizacija serijske veze
}

void loop() {
  while (digitalRead(tipkalo2) == HIGH) { //dok tipkalo 2 nije pritisnutno
    delay(10);                          //čekaj 10 ms
  }

  Serial.println("PROIZVODNA TRAKA JE U POGONU");
  //pošalji poruku serijskim putem
  digitalWrite(led, HIGH);              //uključi LED diodu
  brojac = 0;                           //postavi brojač na 0

  while (brojac < 6) {                  //dok je brojač manji od 6
    if (digitalRead(tipkalo1) == LOW) { //ako je tipkalo 1 pritisnuto
      brojac = brojac + 1;              //dodaj jedan na brojač
    }
  }

  Serial.println("PROIZVODNA KUTIJA JE NAPUNJENA");
  //pošalji poruku serijskim putem
  digitalWrite(led, LOW);               //isključi LED diodu

}