#import RPi.GPIO as GPIO # Uvoz biblioteke GPIO.
from machine import Pin
#GPIO.setwarnings(False) # Isključenje upozorenja.
import time # Uvoz biblioteke time.
time.sleep(0.1)
#GPIO.setmode(GPIO.BOARD) # BOARD metoda numerisanja.
PORTB=[7,11,13,15] # Lista PORTB čiji su elementi redni brojevi pinova
Pin7 = Pin(7,Pin.OUT)
Pin11 = Pin(11,Pin.OUT)
Pin13 = Pin(13,Pin.OUT)
Pin15 = Pin(15,Pin.OUT)
PINS = [ Pin7, Pin11, Pin13, Pin15]
#for pin in PORTB: # Konfigurisanje izlaznih pinova.
# GPIO.setup(pin,GPIO.OUT) # 7,11,13,15,29.
#GPIO.setup(12,GPIO.IN,pull_up_down=GPIO.PUD_UP) # Konfigurisanje ulaznog pina 12 sa uključenim
Pin12 = Pin(12,Pin.IN, Pin.PULL_UP)
# pulldown otpornikom.
#GPIO.setup(16,GPIO.IN,pull_up_down=GPIO.PUD_UP) # Konfigurisanje ulaznog pina 16 sa uključenim
Pin16 = Pin(16,Pin.IN, Pin.PULL_UP)
# pulldown otpornikom.
#GPIO.setup(18,GPIO.IN,pull_up_down=GPIO.PUD_UP) # Konfigurisanje ulaznog pina 16 sa uključenim
Pin18 = Pin(18,Pin.IN, Pin.PULL_UP)
# pulldown otpornikom.
# O Y P B – boje provodnika namotaja.
S=[[1,1,0,0], # 1. Korak (Tabela 12.2)
[0,1,1,0], # 2. Korak (Tabela 12.2)
[0,0,1,1], # 3. Korak (Tabela 12.2)
[1,0,0,1]] # 4. Korak (Tabela 12.2)
def CW(): # Definicija funkcije, odnosno potprograma CW, koji omogućava da se motor
# okrene 512 koraka u smeru kazaljke na satu.
for k in range(0,128): # Koračna prekidačka sekveca ponavlja se 128 puta (128*4=512koraka).
for i in range(0,4): # Obilazak elemenata matrice S,
# počev od nulte vrste.
for j in range(0,4): # Obilazak elemenata jedne vrste.
#GPIO.output(PORTB[j],S[i][j])
PINS[j].value(S[i][j])
time.sleep(0.00198) # Pauza za trajanje jednog koraka.
return
def CCW(): # Definicija funkcije, odnosno potprograma CCW, koji omogućava da se motor
# okrene 512 koraka u smeru suprotnom od smera kazaljke na satu.
for k in range(0,128): # Koračna prekidačka sekveca ponavlja se 128 puta (128*4=512koraka).
for i in range(3,-1,-1): # Obilazak elemenata matrice
# S počev od poslednje vrste.
for j in range(3,-1,-1): #Obilazak elemenata jedne vrste.
#GPIO.output(PORTB[j],S[i][j])
PINS[j].value(S[i][j])
time.sleep(0.00198) # Pauza za trajanje jednog koraka.
return
while 1: # Beskonačna petlja.
#time.sleep(5) # Pauza od 5s jer se merenja vrše svakih 5s.
# Motor se pokreće samo za sledeće 3 dozvoljene kombinacije na digitalnim izlazima senzora:
# Prva kombinacija:
time.sleep(0.025)
#if Pin12.value()==0 and Pin16.value()==0 and Pin18.value()==1:
if (Pin12.value() == 0):
#if GPIO.input(12)==0 :
print('NEISPRAVAN JER JE masa>204')
CW() # Poziv funkcije.
time.sleep(1) # Pauza 1s.
CCW() # Poziv funkcije.
# Druga kombinacija:
time.sleep(0.025)
if (Pin16.value() == 0):
#if Pin12.value()==0 and Pin16.value()==1 and Pin18.value()==0:
#if GPIO.input(16)==0 :
print('ISPRAVAN JER JE 196≤masa≤204')
CCW() # Poziv funkcije.
time.sleep(1) # Pauza 1s.
CW() # Poziv funkcije.
# Treća kombinacija:
time.sleep(0.025)
if (Pin18.value() == 0):
#if Pin12.value()==1 and Pin16.value()==1 and Pin18.value()==0:
#if GPIO.input(18)==0 :
print('NEISPRAVAN JER JE masa<196')
CW() # Poziv funkcije.
time.sleep(1) # Pauza 1s
CCW() # Poziv funkcije.