Sunteți pe pagina 1din 46

INTREBRI din WAM

1. Ce este un microcontroller ? Enumerai cel puin 3 domenii de aplicaii !


Un microcontroler este un calculator pe un singur cip proiectat special pentru citirea dispozitivelor de intrare(ca
butoane sau senzori), procesarea datelor si informatiilor,controlul dispozitivelor de ieire (display, beculee,
motoare sau difuzoare ). Domenii de aplicatie ale microcontrollerelor: telefoane mobile, cuptoare cu microunde,
imprimantele etc (in general, in orice aparatura are nevoie pentru controlul operatiilor

2. De unde vine denumirea de BASIC Stamp (BS)? BASIC Stamp (BS) conine un microcontroller sau este inclus n
acesta? Care sunt principalele component ale modulului i ce rol.
Denumirea de BS provine de la faptul ca microcontrolerul foloseste limbajul Basic si este mic de dimensiunea unui
timbre (Stemp
Basic Stamp 2 are inclus un microcontroler, PIC16C57, pe un modul pt a face programarea foarte usoara,si in
acelasi timp foarte puternica. Principalele componente ale moduluilui sunt:
Cip interpretor - Citeste programul BASIC
Rezonator cu cuart - seteaza viteza la care Instructiunile sunt procesate.
Regulator de 5V- regleaza tensiunea de la 5V-5,5V la 15VDC
EEPROM - stocheaza datele de la calculator.
Semnal serial de conditionare - conditioneaza semnalul tensiunii dintre semnalul serial al calculatorului (+/- 12V)
si Basic Stamp (5V) pt programare

3. Care sunt directivele cu care ncepe fiecare program n PBASIC i cum pot fi introduce
' {$STAMP BS2}
' {$PBASIC 2.5}
Pot fi introduce din Basic Stamp Editor.

Directivele cu care incepe fiecare program sunt: tipul de Basic Stamp pe care se lucreaza (de exemplu BS2 - in
toolbar, chip-ul verde asezat in diagonal) si tipul limbajului de programare folosit (de exemplu PBasic 2.5 in
toolbar, butonul cu eticheta 2.5.

4. Pentru ce sunt folosite comenzile DEBUG i END ?


DEBUG este comanda care spune BASIC Stamp sa transmita un mesaj calculatorului utilizand cablul serial.
END pune BASIC Stamp in modul de putere minima in momentul in care s-a terminat rularea programului. In acest
mod se salveaza energie si se face ca viata bateriei sa dureze mai mult.

5. n ce plaj de valori trebuie s se ncadreaze tensiunea de intrare Vin la BS 2 ? Ce se ntml dac nu se


nadreaz n plaj ? Cnd trebuie ntrerupt tensiunea de intrare Vin (bateria ) la Home Work Board ?
Tensiunea de intrare Vin la BS2 este 5.5-15V. Daca tensiunea este prea mica , BS2 nu va functiona, daca este prea
mare BS2 se poate arde. Tensiunea trebuie intrerupta in momentul in care s-a terminat lucrul (nu se consuma tensiune)
sau in momentul in care se creeaza circuite pe breadboard.

6. Ce este LED-ul i de ce este cel mai comun indicator luminos ?


LED-ul (Light Emitting Diode dioda electro-luminiscenta) este cel mai comun indicator luminous deoarece
utilizeaza putina energie electrica si are o viata extreme de lunga.

7. Presupunem c rezistena intre cele dou terminale ale unui LED este 1 . Ce current va circula prin LED dac l
conectm direct la o barerie de 5 V. Care este probabilitatea ca ledul s fie distrus ? Explicai !
Avand in vedere ca pe LED avem o cadere de tensiune de aproximativ 1,4V, tensiunea o sa scada la 3,6V (5V-
1.4V=3.6V). Din legea lui Ohm o sa rezulte ca avem un current de I=3.6V/1=3.6A. Curentul maxim pe care un LED
il poate suporta de obicei este in jur de 30mA, adica 0.03A. Deci probabilitatea ca LED-ul sa se arda in aceste
conditii este extreme de mare.

8. Ce curent circul printr-un LED conectat la o baterie de 9V inseriat cu o rezisten de 380 ohmi.
I=(9V-1.4V)/380=7.6V/380=0.02A=20mA
9. Care sunt diferitele tipuri de variabile folosite de limbajul PBASIC ? n ce memorie sunt stocate variabilele la un
microcontroler ? Poate ncpea valoarea 500 intr-un octet (byte) ? Ce tip de variabil folosim pentru valoari mai
mici de 15 ?
Variabilele folosite in limbajul PBASIC sunt: Bit (0 1), Nib (0 15), Byte (0 255), Word (0 65535). Ele sunt
stocate in memoria RAM a microcontroler-ului.
Un Byte are valori pana la 255, deci nu, valoarea 500 nu incape intr-un octet.
Pentru valori mai mici de 15 folosim Nib.

10. De cte ori se repet instruciunile cuprinse ntre DO-..LOOP ?


Instructiunile dintre DO-LOOP se repeta la infinit, daca nu avem un DO-LOOP conditional. Daca acesta e
conditional, repetarea se face pana in momentul in care conditia devine falsa.

11. Dai exemplu de dou bucle condiionale!


DO-LOOP si FOR-NEXT

12. Care este instruciunea care repet de un numr prestabilit de ori un grup de comenzi ?
FOR-NEXT

13. Care este diferena dintre depunerea i recepia unui semnal HIGH sau LOW folosind BS2 ?
Receptia unui semnal (de la un buton) trebuie citita si se face prin comanda DEBUG INx (unde x este intrarea la
care este legat butonul). La receptie, pinul BS este folosit ca si input (intrare). Depunerea unui semnal se face
pentru a comanda (un led, motor, etc) si se face cu comanda HIGH sau LOW. Depunerea unui semnal presupune
utilizarea pinului BS ca si output (iesire).

14. Ce nseamn Activ-High i Activ-Low n ceea ce privete un buton conectat la portul P0 ? Deseni schemele
electrice ! Explicai rolul rezistenelor din circuit !
Activ-High:

Cand butonul este apasat, in pinul 0 va fi sesizat tensiunea Vdd (5V). Cand butonul nu e apasat, BS va sesiza pe
pinul 0 tensiunea Vss. Rezistorul de 10kohmi este un resistor de pull-down deoarece trage la masa (Vss -0V)
intrarea. Rezistenta de 220 ohmi este utilizata pentru a limita tensiunea de intrare pe pin in cazul in care butonul e
apasat si prin circuit trece tensiunea Vdd.

Activ-Low:
Cand butonul este apasat, in pinul 0 va fi sesizata tensiunea Vss (0V). Cand butonul nu e apasat, BS va sesiza pe
pinul 0 tensiunea Vdd. Rezistorul de 10kohmi este un resistor de pull-up deoarece trage la Vdd (5V) intrarea.
Rezistenta de 220 ohmi este utilizata pentru a limita tensiunea de intrare pe pin in cazul in care prin circuit trece
tensiunea Vdd.

15. Care sunt schemele de conectare a unui buton cu rezisten pull-up i pull-down la pinul P3 ? Ce rol are
rezistena de Pull-Down ? Care sunt valorile IN3 cnd butonul este apsat ?
Pull-down (trage intrarea la masa):

Cand e apasat butonul avem pe pinul 3 tensiunea Vdd (5V)

Pull-up (trage intrarea la 5V)

Cand e apasat butonul avem pe pinul 3 tensiunea Vss (0V)

16. Ce face comanda DEBUG HOME ? IN3 ?


DEBUG HOME face ca scrierea sa se faca incepand din pozitia de stanga sus a terminalului de DEBUG (DEBUG
TERMINAL).
DEBUG ? IN3 realizeaza citirea valorii de pe pinul 3 si afisarea acesteia in DEBUG TERMINAL.
DEBUG HOME ? IN3 realizeaza citirea valorii de pe pinul 3 si afisarea acesteia in DEBUG TERMINAL, in partea din
stanga sus a ferestrei respective.
17. Ce comenzi sunt folosite pentru afiarea strii unei intrri la un pin (ex. P3) la interval de 0,5 secunde ?
DO
DEBUG ? IN3
PAUSE 500
LOOP

18. Ce fel de blocuri de cod pot fi folosite pentru luarea deciziilor pe baza valorilor unuia sau a mai multor butoane?
IF conditie THEN actiune1
ELSE actiune2
ENDIF
Daca conditie este adevarata atunci se executa actiune1, iar daca nu e adevarata se executa actiune2.

19. Precizai patru tipuri de motoare i dispozitive pentru micare ! Care dintre ele poate fi comandat direct de BS2 ?
Motoare de curent continuu, motoare de curent alternativ, motoare pas cu pas, servomotoare

20. Care este componena intern a unui servomotor standard ? bonus x puncte pentru schema bloc !!!
Un servomotor standard este alcatuit in interior din circuitele de control ale servomotorului, motor de curent
continuu si un reductor .
Schema bloc:

21. Ce comanda controleaza semnalul low time trimis la un servomotor? Ce comand controleaz time
high?
Semnalul low time este controlat de comanda PAUSE. Iar high time este controlat de comanda PULSOUT
22. Ce element de programare putei folosi pentru a controla durata timpului n care un servomotor,
conectat la P7 sta intr-o poziie anume (exmplu ora 12 ) timp n secunde (ex. 2 sec)kl ?
FOR counter = 1 TO 150 //pastreaza servormotorul in pozitie pentru aprox. 3.25 s
PULSOUT 7, 750 //muta servomotorul de la P7 in pozitia de la ora 12
PAUSE 20
NEXT
23. Care sunt limitele pentru limea impulsurilor de comand ale unui servomotor standard de la
PARALLAX? Ce se poate ntmpla dac le depim?
Intre 500 si 1000, iar daca acestea sunt depasit servomotorul va incerca sa ajunga intr-o pozitie peste limitarile
lui mecanice. Asta nu o sa avarieze servomotorul, insa ii va scurta perioada de viata
24. Care sunt comenzile prin care comandm limea impulsurilor i perioada ntre dou impulsuri ?
Specificai argumentele comenzilor! Exemplificai pentru orele 10, 12, 14 !
FOR counter = 1 TO 150 //isi pastreaza pozitia pentru aproximativ 3.25 s
PULSOUT 7, 1000 //servomotorul de la P7 la ora 10
PAUSE 20
NEXT
FOR counter = 1 TO 150
PULSOUT 7, 500 //servomotorul la ora 2
PAUSE 20
NEXT
FOR counter = 1 TO 150
PULSOUT 7, 750 //servomotorul la ora 12
PAUSE 20
NEXT

25. Cum se utilizeaz Terminal Debug pentru a trimite mesaje la BASIC Stamp? Ce comanda de programare
este folosita pentru a face BASIC Stamp sa primeasca mesaje de la Terminal Debug?
Odata deschisa fereastra Debug Terminal, ultilizatorul poate introduce date de la tastatura care sunt transmise
placii BASIC Stamp. Pentru a primi BASIC Stamp date de la calculator se foloseste comanda DEBUGIN
26. Ce este poteniometrul i cte terminale are ? Dai cteva exemple unde se utilizeaz !
Potentiometru este un dispozitiv de intrare cu rezistenta variabila. Acesta are 3 terminale
Exemple de utilizare:
- de a regla luminozitatii unui LED
- de a regla volumul unui difuzor
- de masurare a unghiului de rotatie
27. Poteniometrul este un traductor de deplasare sau de poziie ? Un servomotor conine poteniometru?
Dac da , ce rol are acesta ?
Potentiometru este un traductor de pozitie (rotatie). Acesta este folosit si in interiorul servomotorului unde
sesizeaza pozitia actuala si se afla pe ramura de feedback.
28. ntr-un poteniometru tipic, este rezistena dintre cele dou terminale exterioare reglabil ?
Nu! Acea rezistenta este fixa!
29. Poate fi asemnat un condensator ca o baterie rencrcabil? Dac DA care ar fi diferena dintre ele?
Da, insa condesatorul stocheaza energia electrica pentru o scuta perioada de timp
30. Care este tensiunea de prag care delimiteaz nivelul logic 0 de nivelul logic 1, la BS 2 ?
1.4 V
31. Care este principiul msurrii unei rezistene variabile cu un microcontroler care nu are dect porturi
digitale cum este BS2 ? Exemplilificai prin circuit electric i grup de comenzi n PBASIC !
Masurarea rezistentei se face prin RC-time care este o masura timpului de descarcare a unui
condensator (C) printr-o rezistenta (R) intr-un pin digital al placi BS2.
' {$STAMP BS2}

' {$PBASIC 2.5}


timeCounter VAR Word
counter VAR Nib
DEBUG CLS
HIGH 7
DEBUG "Capacitor Charging...", CR
FOR counter = 5 TO 0
PAUSE 1000
DEBUG DEC2 counter, CR, CRSRUP
NEXT

DEBUG CR, CR, "Measure decay time now!", CR, CR


INPUT 7
DO
PAUSE 100
timeCounter = timeCounter + 1

32. Ce se ntmpl cu timpul de desc rcare a unui condensator cnd R (rezistorul) are valori mai mici sau
mai mari?
Este invers proportional! Daca rezistenta creste, timpul de descarcare scade, si invers!
33. Care este comanda folosit de BASIC Stamp 2 pentru msurarea unei rezistene variabile ntr-un circuit
RC?. Explicai argumentele acestei comenzi !
RCTIME Pin, State, Variable
Pin - pinul la care reteaua RC este conectata
State - starea initiala in momentul in care incepe cronometrarea (0 sau 1)
Variable - locatia de memorie unde este stocat rezultatul.
34. Ce face instruciunea CON? Explicai n termeni de nume i numr.
Intructiunea CON vine de la CONstant si mentine o valuare constanta, ne permitanduse schimbarea acesteia
pe parcursul programului
Sintaxa:
PI CON 3
35. Ce este un afiaj cu 7 segmente i ce avantaje au fa de alte tipuri de afiaje? Detaliai cu exemple din
viaa cotidian !
Un afisaj cu 7 segmente reprezinta un set de 7 LED-uri sub forma de bara aranjate in asa fel incat se permita
afisarea a cat mai multor tipuri de litere si cifre.
Exemple de aplicare a afiseajelor:
-displayul cuptorului cu microunde
-in ceasul electronic
36. Ce nseamn anod comun, unde se conecteaz acesta i cu ce comand aprinde un segment legat la
pinul unui BS.2 (ex. P13)?
Anod comun inseamna ca toti pinii anod ale LED-urilor sunt legata impreuna, acestea se leaga la un singul pin
de alimentare(Vss)
Aprinderea unui LED din afisaj conectat la pinul P13 se face cu urmatoarea comanda:
LOW 13;
37. Ce nseamn catod comun, unde se conecteaz acesta i cu ce comand aprine un segment legat la pinul
unui BS.2 (ex. P12) ?
Catod comun inseamna ca toti pinii catod ale LED-urilor sunt legate impreuna, acestea se leaga la un pin de
masa (GND)
Aprinderea unui LED din afisaj conectat la pinul P13 se face cu urmatoarea comanda:
HIGH 13;
38. Cum se numete grupul de fire care conduce semnale la si de la un dispozitiv paralel?
bus-parallel
39. Ce face comanda LOOKUP 2, [A,b,c,d,E,Q],character ?
Din seria valorilor aflate intre paranteze patrate selecteaza caracterul "c" si il stocheaza in variabila character
40. Ce face comanda LOOKDOWN 600, <= [40, 150, 275, 400, 550, 800], index ?
Din seria valorilor aflate intre paranteze patrate selecteaza prima valoare care este mai mare sau egala cu
600, adica 800, iar aceasta valoare returnata este memorata in index

41.Cte porturi I/O are BS 2. n care memorie le gsim i cum sunt grupate ? BONUS x puncte pentru harta
memoriei !!!
BS2 are 16 pini de I/O notati P0...P15. Acestea sunt stocate in memoria EEPROM

42.Cum interpretai comenzile DIRA =%1111, OUTA = % 0001 ? Ce comenzi HIGH si LOW sunt echivalente ?
Cu DIR si OUT se pot controla pinii I/O.DIR este directia daca directia este 1 I/O este setat ca si iesire,si daca este
0 ca si intrare.OUT ,daca OUT este1 pinul va HIGH si daca este 0 va fi LOW.
DIRA si OUTA pot controla simultan toti pinii I/O.
Simbolul % semnifica, ca numerele care il urmeaza au valoare binara-valorile 1 si 0,iar fiecare pozitie este 1 bit.
DIRA = % 1111 se refera la pinii I/O de la P0-P3 pe care ii seteaza ca iesire
OUTA=%0001 seteaza pe LOW P0 P1 P2 si pe HIGH P3.
Astfet: DIRA=%1111 se interpreteaza DIR3=1 ,DIR2=1, DIR1=1, DIR0=1
De asemenea OUTA=%0001OUT3=0, OUT2=0, OUT1=0, OUT0=1.

43.Care este numele compusului chimic care face un fotorezistor sensibil la lumin?
Compusul chimic este sulfura de cadmiu(CdS).
43.Care este diferena ntre fotorezisten i poteniometru ? Desenai simbolurile electrice pentru ambele.
Fotorezistorul variaz n funcie de intensitatea luminii care l lumineaz, spre deosebire de potentiometru la care
rezistena variaz n funcie de poziia momentan a cursorului.

44.Care este principiul msurrii nivelului de iluminare folosind o fotorezisten i BS 2 ? Exemplificai prin circuit i
grup de comezi !

' {$STAMP BS2}


' {$PBASIC 2.5}
time VAR Word
DO
HIGH 2
PAUSE 100
RCTIME 2, 1, time
DEBUG HOME, "time = ", DEC5 time
LOOP
Capacitorul este incarcat prin iesirea (pinul P2) si este masurat timpul de descarcare prin rezistenta. Astfel in
functie de intensitatea luminii, timpul de descarcare este diferit.
46.Ce este EEPROM i pentru ce este folosit ? Ct de muli bytes(octei) poate stoca EEPROM-ul din modulul BASIC
Stamp 2 ? Ci biti poate stoca?
Electrically Erasable Programmable Read-Only Memory - Este folosit pentru stocarea provizorie a datelor ce urmeaza a
fi ulterior utilizate. Cea mai important caracteristic a acestei memorii este c nu pierde coninutul in timpul inchiderii
sursei de alimentare. n EEPROM exist posibilitatea de a utiliza 2048 octei pentru a stoca 2048 numere diferite,
fiecare avnd posibilitatea de a stoca o valoare ntre 0 i 255. De asemenea pot fi stocai 2048 Kb (kilo bii), adic 2048
numere diferite, dar fiecare numr este limitat la o valoare de 0 sau 1.

47.Ce comand se utilizeaz pentru a stoca o valoare n EEPROM? Exemplificai pentru stocarea valorilor 125, 700,
1000, ncepnd cu adresa 7 !
Pentru a stoca o valoare in EEPROM se utilizeaz comanda WRITE.
WRITE 7,125
WRITE 7, Word 700
WRITE 7, Word 1000 (Pentru a stoca valori mai mari de 255, parametrul Word trebuie specificat.

48.Ce comanda se utilizeaz pentru a regsi o valoare din EEPROM? Exemplificai pentru citirea unui byte la adresa 7
i unui cuvnt la adresa 8 ?
Pentru a o regsii o valoare in EEPROM se utilizeaz comanda READ.
READ 7,littleEE (littleEE-variabila byte)
READ 8,Word eepromValue (eepromValue-variabila word)
49.Ce este o etichet ? Ce este o subrutin? Ce comanda este folosita pentru a apela o subrutin? Ce comanda este
folosita pentru a ncheia o subrutina? Exemplificai prin subrutina de citire a nivelului de iluminare folosind o
fotorezisten in circuit RC conectat la portul P0 !
O etichet este un nume care poate fi folosit ca nlocuitor n programul dumneavoastr, cu ajutorul creia comanda
GOSUB poate face saltul de la o etichet la alta. O subrutin este un segment de cod ce deplinete o funcie bine
definit. Pentru a apela o subrutin se utilizeaz comanda GOSUB urmat de numele etichetei, iar pentru a o ncheia
se va utiliza comanta RETURN.

DO
GOSUB Get_Rc_Time
GOSUB Delay
GOSUB Update_Display
LOOP
Get_Rc_Time: ' RC-time subroutine
HIGH 2
PAUSE 3
RCTIME 2, 1, time
RETURN
Delay: ' Delay subroutine.
PAUSE time
RETURN
50.Explicai pe scurt efectul piezoelectric !
Efectul piezoelectric-la comprimarea unui cristal are loc aparitia unei polarizari electrice formandu-se o diferenta de
potential cu generare de curent electric.
51.Care este comanda care BS2 genereaz la un port un semnal de o anumit frecven i durat ?
FREQOUT PIN,DURATION,FREQ1,FREQ2(Optional in cazul in care se mizeaza doua sunete)
Ex: Semnal la pinul P9 cu durata 1,5 s si frecventa 2 kHz
FREQOUT 9,1500,2000
52.Ce cauzeaza ca un ton sa sune cu o tonalitate ridicata? Ce cauzeaza un ton sa aibe o tonalitate scazuta?
Frecventa determina tonalitatea tonului.O frecventa ridicata va genera un ton de tonalitate ridicata,iar o frecventa
scazuta va genera un ton de tonalitate scazuta.

53.Ce face comanda FREQOUT 15 , 1000 , 3000? Ce semnificaie au argumentele?


Comanda FREQOUT trimite semnale HIGH/LOW catre difuzor pentru a genera sunet.Numerele indica pe rand I/O pin
P15, durata sunetului de 1 secunda, cu o frecventa de 3kHz.
Semnificatia fiecarui numar :
15 pinul 15
1000 durata tonului echivalenta cu 1000 ms sau o secunda
3000 frecventa unui ton, in Hertz, deci trimite un ton de 3000 Hz .
54.Ce face comanda FREQOUT 15 , 1000 , 3000, 2000?
Permite redarea(mixarea) a doua semnale simultan cu frecventele 3 kHz si 2 kHz.
55.Care sunt elementele de baz care caracterizeaz efectul unui sunet ?
Frecventa, durata (amplitudinea,timbrul).
56.Ce este o octav i cte note are ? Dac cunosc frecvena notelor dintr-o octav cum aflu frecvena notelor din
octava superioar ?
Octava este un grup de 12 note(intr-o gama cromatica).Daca stim frecventa nptelor dintr-o octava, frecventa notelor din
octava superioara este dublata.
57.Dac clapele C6 i D6 de la pian dau frecvenele de 1046 , respectiv 1174 heri, ce frecven va da clapa neagr C7
diez sau D7 bemol ?
1217 (1217,5 Hz)
58.Cum scrii n memoria EEPROM o secven de note (ex. C, C, G, G, A, A, G ) incepnd cu adresa Note.
Note DATA C, C,G ,G A ,A, G (comanda DATA fiind echivalenta cu WRITE).
59.Care este valoarea variabilei x din urmtoarea secven de program ?
Note DATA C, C,G A ,A, G
READ Note +5, x
Valoarea lui x este G
60.Ce face comanda SELECT..CASE ?
SELECT...CASE este utilizat pentru a)selectarea unei variabile sau expresii,b)evalueaza acea variabila sau expresie de la
caz la caz,c)executa diferite blocuri de cod,in functie de cazul in care valoarea variabilei se potriveste cu cazul respectiv.

INTREBRI din Robotics with the BOE-BOT

1. Facei o comparaie ntre servomotorul cu rotaie continu i servomotorul standard de la Parallax ! (bonus
pentru schemele bloc )
Servomotoarele standard sunt controlate in pozitie. Servomotoarele cu rotatie continua sunt provenite
din servomotoarele standard dar avand unele modificari si anume eliminarea traductorului de pozitie
respectiv a clapetelor de cursa.
Standard:Unghiul de iesire va depinde de valoarea lui U si de incarcare. Controlul este in pozitie.
Rotatie
continua: viteza
motorului
depinde de
unghiul dorit si
de incarcare.
Controlul este
in viteza.
2. Ce nseamn centrarea unui servomotor cu rotaie continu ? Cum se face ? exemplificai pentru un servo
conectat pa P12 !
Deoarece serovmotoarele nu sunt pre-ajustate din fabrica, acestea se ajusteaza cu ajutorul unei
surubelnite pentru a sta nemiscate. Acest lucru se numete centrarea servo. Dupa ajustare se va testa
servomotorul pt a ne asigura ca ele functioneaza intr-un mod corespunzator.
3. Desenai diagram de timp pentru un servomotor cu rotaie continu pentru cele trei cazuri ; Vmax CW, Vmax
CCW, i V=0 ! Scriei comenzile PULSOUT pentru servo conectat la P12, pentru cele trei cazuri ! Ce
frecven trebuie s aib impulsurile pentru a se realize micarea ?

Frecventa impulsurilor pentru 40,65Hz

4. Pentru ca Boebotul sa mearga inainte in ce directie trebuie sa se roteasca rotile? Exemplificai prin comanda
PULSOUT . (servo dreapta conectat la P13 iar stnga la P12 )

Roata din stanga trebuie sa se roteasca in sensul invers al acelor de ceasornic.

PULSOUT 12, 850

Roata din dreapta trebuie sa se roteasca in sensul acelor de ceasornic.

PULSOUT 13, 650

5. Cnd robotul pivotez la stanga ce trebuie sa faca roata din dreapta? Dar cea din stanga? Exemplificai prin
comanda PULSOUT . (servo dreapta conectat la P13 iar stnga la P12 )
Cand Boe-Bot-ul pivoteaza sper stanga roata dreapta se roteste in sensul acelor de ceas iar roate stanga la
fel.
Comanda este :
For counter=1 to 122
Pulseout 13, 650
PULSOUT 12, 650
NEXT

6. Cnd robotul se rotete la stanga ce trebuie sa faca roata din dreapta? Dar cea din stanga? Exemplificai prin
comanda PULSOUT .(servo dreapta conectat la P13 iar stnga la P12 )
Cand Boe-Bot se roteste la stanga roata din dreapta si cea din stanga trebuie sa se miste in sensul acelor
de ceasornic.

PULSOUT 13,650

PULSOUR 12,650

7. Cum corectezi programul unui robot daca acesta merge usor spre stanga si vrei sa mearga drept inainte?
Exemplificai prin comanda PULSOUT .(servo dreapta conectat la P13 iar stnga la P12 )
Daca Boe-Bot isi schimba directia incet spre stanga atunci fie roata din stanga se roteste prea incet, fie roata din
dreapta se roteste prea repede. Avand in vedere faptul ca deja Boe-Bot se deplaseaza cu viteza maxima , sa crestem
viteza rotii din stanga nu rezolva nimic, insa daca incetinim roata din dreapta situatia se remediaza.

PULSOUT 13,690 (exemplul l-am pus eu)

PULSOUR 12,850

8. Care este legatura dintre COUNTER (bucla for...loop) si duration(comanda pulsout)? Exemplificai la navigarea
cu ramp la pornire i oprire .
Navigarea cu rampa la pornire si la oprire este mai ingaduitoare pentru servo-uri si este recomandat
utilizarea rutinelor de de pornire si oprire cu semnal rampa, in locul startului si stopului brusc.

Navigarea cu rampa la pornire si la oprire este realizata prin luarea variabilelor folosite ca argument
Counter in bucla FORNEXT si adunarea sau scaderea lor din valoarea 750 a argumentului Duration a
comenzii PULSOUT.

pornire cu rampa

FOR counter=1 TO 100

PULSOUT 13,750 - counter

PULSOUR 12,750 + counter

PAUSE 20

NEXT

oprirea cu rampa

FOR counter=1 TO 100

PULSOUT 13,650 + counter

PULSOUR 12,850 - counter


PAUSE 20

NEXT

9. Dac robotul face 20 cm. ntr-o secund, cte impulsuri trebuie s-I dai pentru a parcurge 60 cm ?
Daca robotul face 20 cm/sca ii ia 3 secunde sa faca 60 cm.
Basic stamp trimite la servomotor 40,65 pluse/s. Aplicam regula de 3 simpla
1 s..40.65 pluse/s
3 s..x
X=3*40.65/1
X=121.95 pluse

10. Ce se foloseste pentru a salva in memoria eeprom? Dar pentru a citi din eeprom? Detaliai pentru pentru
variabile de tip bayte i word !
EEPROM-ul lui BASIC Stamp stocheaz programul pe care l ruleaz, dar se poate lua avantajul utilizrii
fiecrei poriuni neutilizate a programului pentru a stoca valori. Aceasta este o cale bun pentru a stoca rutine
de navigare personalizate. Directiva DATA poate stoca valori n EEPROM. Octeii sunt stocai n mod
predefinit dar, adugnd modificatorul Word item de dat, putem stoca valori pn la 65535, n 2 octei, n
funcie de spaiul de memorie al EEPROM-ului. Valorile se pot citi napoi din EEPROM cu ajutorul comenzii
READ. Dac se ncerarca s se prelueze o varibil de lungimea unui cuvnt, trebuie s se plaseze un
modificator Word naintea variabilei ce va primi valorea pe care comanda READ o aduce.

11. Ce block de comenzi se pot folosi pentru a selecta o variabila prestabilit?

Blocul de cod folosit pentru a selecta o anumit variabil i pentru a o evalua pe baz
de caz este SELECT ... CASE ... ENDSELECT. EX: SELECT instruction
CASE "F": GOSUB Forward
CASE "B": GOSUB Backward
CASE "R": GOSUB Right_Turn
CASE "L": GOSUB Left_Turn
ENDSELECT

12. Care sunt conditiile diferite in care se poate folosi DO...LOOP ? (bucle condiionale)

Poate fi folosita conditia DO UNTIL(conditie) LOOPpermite buclei sa se repete


pana cand conditia este indeplinita. Conditia DO WHILE(conditie) LOOP perimte
buclei sa se repete atata timp cat o stare exista. Conditia DO LOOP UNTIL (conditie)
permite buclei sa se repete pana cand caracterul Q este citit din EEPROM.

13. Cum raspunde un Photoresistor sau o rezistenta la o lumina puternica,si la una slaba.Ce se intampla daca
nivelul luminii este la mijloc?
Un fotorezistor sau fotorezisten este un senzor a crui rezisten electric se modific n funcie de nivelul de
iluminare.

Dac iluminarea crete rezistena scade i invers dac ilumunarea scade rezistena electric crete. Cu alte
cuvinte ntunericul cauzeaz rezisten mare iar iluminarea cauzeaz o rezisten mic.

14. Are un pin de I/O un efect asupra circuitului atunci cand e setat la input? Ce cauzeaza ca valoarea inregistrata
la intrare de un pin I/O sa fie setata la 1 sau 0?
NU. Valoarea tensiunii aplicate cauzeaza registrul de intrare sa schimbe ceea ce
stocheaza. Dac tensiunea aplicat este mai mic de 1.4 voli, stocheaz un 0. In caz contrar,
stocheaz 1.

15. Ce semnifica o tensiune de prag la un port de intrare ? Care este tensiunea de prag pentru un pin I/O de la
BASIC STAMP?
Tensiunea de prag este o valoare care poate fi 1 logic daca este deasupra de prag si 0
logic daca este sub prag. Tensiunea de prag a unui pin I/O pt Basic Stamp este de 1,4 V

16. Referitor la figura 6-4 pe pagina 197 ce cauzeaza Vo sa creasca sau sa scada peste
tensiunea limita a unui pin I/O al BASIC STAMP ? Referitor la circuit ce cauzeaza
schimbarea valorilor lui Vo?
Valoarea lui Vo este determinata de raprtul rezistorilor. Vo isi schimba valoarea deoarece
rezistorul R isi schimba valoarea. R este un fotorezistor care isi schimba valoarea n funcie
de cantitatea de lumina care cade pe ea.

17. Care este frecvena de armonici trimise de FREQOUT 2, 1, 38500? Care este
valoarea frecvenei fundamentale de comand trimisa? Ct timp sunt
aceste semnale trimise? La ce pin I / O trebuie s fie conectat circuitul LED-uri IR n scopul de a difuza acest
semnal?
38,5 kHz este frecventa armonica. Frecventa fundamentala = 65536 38500 = 27036 Hz.
Semnalele sunt trimise pentru o milisecunda si ledul IR trebuie conectat la pinul 2.
18. Ce comanda trebuie s urmeze imediat comanda FREQOUT, n scopul de a
a determina cu exactitate dac un obiect a fost sau nu detectat?

se foloseste o variabila pentru a citi daca senzorul a detectat semnalul infrarosu care se reflecta de pe un obiect,
fiindca senzorul ramane pe High o perioada scurta de timp sub 1 milisecunda

19. Ce nseamn n cazul n care detectorul IR recepioneaz un semnal slab? Ce nseamn aceasta n cazul n care
detectorul recepioneaz un semnal inalt?
Un semnal slab inseamna ca IR la 38,5 kHz a fost detectat, astfel, un obiect a fost
detectat. Un semnal puternic inseamna ca nici un IR la 38,5 kHz nu a fost detectat, deci, nici un obiect nu a fost
detectat.

20. Ce se ntmpl dac se modific valoarea unui rezistor n serie cu un LED rou?
Ce se ntmpl dac se modific valoarea unui rezistor n serie cu o conexiune prin LED-uri infrarou?
Din punct de vedere electric, pentru ambele leduri (atat rosu cat si cu infrarosu), un
rezistor mic va cauza stralucirea mai puternica. Un rezistor mai mare are ca rezultat o lumina mai vaga a led-
ului. In concluzie, led-urile IR cu o lumina mai puternica face posibila detectarea obiectelor care sunt mai
departe.

Exerciii WAM
1. Ce afiez terminalul DEBUG dac rulm urmtoarele comenzi
x VAR byte
x =
DEBUG DEC, DEC3 x, ?x+11, CR, BIN , BIN ?x+20, CR , HEX HEX ? X+11, CR ASCI 7*11
Daca x = 10
Se va afisa: DEC 010 (afiseaza numarul utilizand 3 cifre)
?x+11=21
BIN ?x+20=11110 (30 in binar)
HEX ?x+11= 15 (21 in hexazecimal)
ASCI M

2. Desenai schema electric prin care un led bicolor (rou-verde) este conectat la P14 i P15 , iar unul monocrom
(galben) la P13. Scriei un program prin care ledul bicolor este aprins pe rou 3 sec. dup care se aprinde cel verde
pentru X secunde, timp n care ledul galben clipete cu frecventa de Z pe second.

' {$STAMP BS2}


' {$PBASIC 2.5}
DEBUG "Program Running!"
counter VAR Byte
' Rosu pentru 3 secunde ' Bi-color LED Red
HIGH 15
LOW 14
PAUSE 3000
'Verde pentru x secunde...
LOW 15 ' Bi-color LED Green
HIGH 14
' ...cat timp LEDul galben clipeste
FOR counter = 1 TO x
HIGH 13 ' LED galben aprins
Secventele dintre FOR si NEXT se repet de
PAUSE 500
cate ori trebuie sa clipeasca intr-o secunda
LOW 13 ' LED galben sting
LED-ul galben (de Z ori)
PAUSE 500
NEXT
Se reapinde LEDul rosu
HIGH 15
LOW 14

3. Desenai schema electric a unui circuit prin care dou leduri monocrom (rou i verde) conectate la P15 i P14
sunt comandate de dou butoane PB1 i PB2 conectate la P3 i P4 cu rezisten Pull -Up. Pseudocodul
programului este: ampele butoane apsate - ambele leduri aprinse, un buton apsat un led aprins. Facei
ordinograma i scriei codul programului cu comentarii !

' {$STAMP BS2}


' {$PBASIC 2.5}
DO
DEBUG HOME
DEBUG ? IN4
Se citesc intrarile IN3 si IN4 (se verifica daca butoanele sunt apasate)
DEBUG ? IN3
IF (IN3 = 1) AND (IN4 = 1) THEN
HIGH 14 Daca ambele butoane sunt apasate
HIGH 15 se aprind ambele LEDuri
PAUSE 50
ELSEIF (IN3 = 1) THEN Daca doar butonul de pe pinul 3 e apasat se
HIGH 14 aprinde LEDul de pe pinul 14
PAUSE 50
ELSEIF (IN4 = 1) THEN
HIGH 15 Daca doar butonul de pe pinul 4 e apasat se
PAUSE 50 aprinde LEDul de pe pinul 15
ELSE
PAUSE 50
ENDIF
LOW 14
LOW 15
PAUSE 50
LOOP
4. Scriei codul unui program prin care un servomotor conectat la P14 se deplaseaz ntre 700 i 800 cu viteza
minim i s revin napoi cu o vitez de patru opri mai mare.
' {$STAMP BS2}
' {$PBASIC 2.5}
counter VAR Word
DO
FOR counter = 700 TO 800
PULSOUT 14, counter
PAUSE 7
DEBUG DEC5 counter, CR, CRSRUP afiseaza in debug terminal pozitia la care s-a ajuns
NEXT
FOR counter = 1000 TO 500 STEP 4
PULSOUT 14, counter
PAUSE 7
DEBUG DEC5 counter, CR, CRSRUP
NEXT
DEBUG CR, "Repeat", CR
LOOP

5. Desenai schema electric de msurare a unui poteniometru conectat ( intr-un circuit RC) la P7. Scriei
programul RC-time de afiare a valorii poteniometrului la interval de 1/4 sec.i comentai-l.

' {$STAMP BS2}


' {$PBASIC 2.5}
val VAR Word
DO
HIGH 7
PAUSE 250
RCTIME 7, 1, val
DEBUG HOME, "valoare = ", DEC5 val
LOOP
Se declara variabila val in care se inregistreaza valoarea masuratorii potentiometrului
In bucla DOLOOP se intampla urmatoarele:
Se seteaza pinul 7 ca HIGH
Se asteapta 250ms (1/4sec) intervalul intre afisareava valorii potentiometrului
Se executa comanda RCTIME salvand in variabila val valoarea potentiometrului
Afisarea variabilei val in Debug Terminal
6. Desenai schema electric prin care un servo conectat la P14 este comandat cu dou butoane (PB1 i PB2 )
conectate la pini P3 i P4, n montaj cu rezisten PUL UP respectiv PULDOWUN . Facei ordinograma i scriei
codul programului prin care servo se rotete n sensul acelor de ceasornic (CW) dac PB1 este apsat i n sens
invers (CCW) dac PB2 este apsat. Pasul este de 20 . Atenie s nu depi1i limitele (500 i 1000) !

Pull up:

Pull down

' {$STAMP BS2}


' {$PBASIC 2.5}
duration VAR Word
duration = 750
DO
IF IN3 = 1 THEN
IF duration > 500 THEN
duration = duration - 20
ENDIF
ENDIF
IF IN4 = 1 THEN
IF duration < 1000 THEN
duration = duration + 20
ENDIF
ENDIF
PULSOUT 14, duration
PAUSE 10
DEBUG HOME, DEC4 duration, " = duration"
LOOP
7. Scrieti o comanda OUTH care sa seteze P8, P10, P12 inalte (high)si P9, P11, P13 joase (low). Presupunand ca toti
pinii I/O au inceput ca fiind intrari, scrieti comanda DIRH care va cauza pinii I/O sa trimita semnale inalte/joase in
timp ce parasesc P14, P15 configurati ca intrari.

Pini- 1514131211100908
OUTH=% 0 0 0 1 0 1 0 1
DIRH=% 1 1 0 0 0 0 0 0

8. n figura 1 se prezint un afiaj cu 7 segmente i conexiunile sale la BS 2. Scriei un program prin care afiai cifrele
de la 0 la 9 la interval de o secund. Prezentai dou variante de program !

Program 1

'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "Program Running!"
OUTH = %00000000 ' OUTH initialized to low.
DIRH = %11111111 ' Set P8-P15 to all output-low.
' Digit:
' BAFG.CDE
OUTH = %11100111 ' 0
PAUSE 1000
OUTH = %10000100 ' 1
PAUSE 1000
OUTH = %11010011 ' 2
PAUSE 1000
OUTH = %11010110 ' 3
PAUSE 1000
OUTH = %10110100 ' 4
PAUSE 1000
OUTH = %01110110 ' 5
PAUSE 1000
OUTH = %01110111 ' 6
PAUSE 1000
OUTH = %11000100 ' 7
PAUSE 1000
OUTH = %11110111 ' 8
PAUSE 1000
OUTH = %11110110 ' 9
PAUSE 1000
DIRH = %00000000 ' I/O pins to input,
' segments off.
END

program 2
'{$STAMP BS2}
'{$PBASIC 2.5}
index VAR Nib
OUTH = %00000000
DIRH = %11111111
DEBUG "index OUTH ", CR,
"----- --------", CR
FOR index = 0 TO 9
LOOKUP index, [ %11100111, %10000100, %11010011,
%11010110, %10110100, %01110110,
%01110111, %11000100, %11110111, %11110110 ], OUTH
DEBUG " ", DEC2 index, " ", BIN8 OUTH, CR
PAUSE 1000
NEXT
DIRH = %00000000
END
9. Scriei......................................... ntr-o bucl care se repet continuu pe afiajul cu 7 segmente din figura 1. Facei
n aa fel nct afiarea unei litere s dureze 0,5 secunde. Se va folosi directiva CON i comanda LOOKUP..
Programul de mai jos scrie: FISH CHIPS And dIP!!!!!
'{$STAMP BS2}
'{$PBASIC 2.5}
' Patterns of 7-Segment Display to create letters
A CON %11110101
C CON %01100011
d CON %10010111
F CON %01110001
H CON %10110101
I CON %00100001
n CON %00010101
P CON %11110001
S CON %01110110
space CON %00000000
OUTH = %00000000 ' All off to start
DIRH = %11111111 ' All LEDs must be outputs
index VAR Byte ' 19 chars in message
DO
DEBUG "index OUTH ", CR,
"----- --------", CR
FOR index = 0 TO 18 ' 19 chars in message
LOOKUP index, [ F, I, S, H, space, C, H, I, P, S, space,
A, n, d, space, d, I, P, space ], OUTH
DEBUG " ", DEC2 index, " ", BIN8 OUTH, CR
PAUSE 500 ' 500 ms between letters
NEXT
LOOP
10. Desenai schema unui fotorezistor n circuit RC-time , conectat la P7. Scriei programul prin care afiai nivelul de
iluminare !

Mod de functionare al programului:


1.Citeste valoarea fotorezistorului.
2.Calculeaza cat sa astepte pana cand updateaza afisazul de 7 segmente LED.
3.Updateaza afisazul de 7 segmente LED.

' {$STAMP BS2}


' {$PBASIC 2.5}
DEBUG "Program Running!"
index VAR Nib ' Variable declarations.
time VAR Word
OUTH = %00000000 ' Initialize 7-segment display.
DIRH = %11111111
DO ' Main routine.
GOSUB Get_Rc_Time
GOSUB Delay
GOSUB Update_Display
LOOP
' Subroutines
Get_Rc_Time: ' RC-time subroutine
HIGH 2
PAUSE 3
RCTIME 2, 1, time
RETURN
Delay: ' Delay subroutine.
PAUSE time
RETURN
Update_Display: ' Display updating subroutine.
IF index = 6 THEN index = 0
' BAFG.CDE
LOOKUP index, [ %01000000,
%10000000,
%00000100,
%00000010,
%00000001,
%00100000 ], OUTH
index = index + 1
RETURN
11. Desenai schema electric a unui circuit RC-time format din fotorezistor conectat la P5 i un LED conectat la P14.
Scriei un program prin care afai nivelul de iluminare. Dac acesta este mai mic dect un prag ( ex. 300) atunci
LED-ul plpe de 5 ori pe secund .

' {$STAMP BS2}


' {$PBASIC 2.5}
time VAR Word
DO
HIGH 5 ' Citeste fotorezistorul cu comanda RCTIME
PAUSE 100
RCTIME 5, 1, time
DEBUG HOME, "time = ", DEC5 time ' Afiseaza valoarea pe Debug Terminal
IF (time < 300) THEN ' se compara valoarea fotorezistorului cu pragul dat (300)
HIGH 14 ' Palpaie LED-ul de 5 ori pe secunda
PAUSE 100
LOW 14
PAUSE 100
ENDIF
LOOP
12. Desenai schema prin care dou butoane B1 i B2 conectate la porturile P2 i P3 (cu rezisten PUL Down )
comand un difuzor piezoelectric conectat la P9. Facei ordinograma i scriei codul programului al crui
pseudocod este:
- Dac B1 este apsat se emite pentru 1 secund un sunet cu frecvena 2Khz.
- Dac B2 este apsat se emite pentru 2 secunde un sunet cu frecvena 3 Khz.
- Dac B1i B2 sunt apsate se emite pentru 3 secunde sunet cu frecvena mixat ntre 2Khz i 3Khz .

'{$STAMP BS2}
'{$PBASIC 2.5}
DO

IF (IN2 = 1) AND (IN3 = 1) THEN


FREQOUT 9, 3000, 2000, 3000 ' 2kHz si 3kHz simultan pentru 3s
ELSEIF (IN2 = 1) THEN
FREQOUT 9, 1000, 2000 ' 2kHz pentru 1s
ELSEIF (IN3 = 1)
FREQOUT 9, 2000,
3000 ' 3kHz pentru 2s
ENDIF

LOOP
Exerciii i probleme ROBOTICS .
Referine Ch.4 pg.123

1. Scriei un program prin care Boe-Bot (cu servo dreapta conectat la P13 i stnga la P12 ) s mearg o secund
nainte. Se consider c interpretarea codurilor comenzilor dintr-o bucl dureaz 1,4 ms. Justificai prin calcule numrul
de bucle pentru o secund !
X VAR BYTE

counter VAR Word

FOR counter = 1 TO 41
PULSOUT 13, 650 dureaza 1.7 ms (850 *2us)
PULSOUT 12, 850 dureaza 1.3 ms (650 *2us)
PAUSE 20 dureaza 20 ms
NEXT dureaza 1.4ms sa execute bucla
1.7+1.3+20+1.4 = 24.4 ms
1000/24.4= 40.9 (41)
2. Precizai care sunt cele 6 tipuri de micri (direcii ) pe care le poate face robotul Boe-Bot (cu servo dreapta
conectat la P13 i stnga la P12 ) , specificnd i comenzile utilizate . (ex. pivotare stnga PULSOUT 13, 650; PULSOUT
12, 750 ). Scriei codul subrutinelor de micare timp de 3 secunde pentru cele 6 direcii ! Se consider c interpretarea
comenzilor dintr-o bucl dureaz 1,4 ms.
X VAR BYTE
Mers fata:
FOR X = 1 TO 123 ' ruleaza timp de 3 secunde
PULSOUT 12, 850 1.7ms
PULSOUT 13, 650 1.3ms
PAUSE 20 20ms
NEXT 1.4ms
1.7+1.3+20+1.4=24.4ms
3000/24.4 =122.95

Mers inapoi:
FOR x = 1 TO 123 ' ruleaza timp de 3 secunde
PULSOUT 12, 650 1.3ms
PULSOUT 13, 850 1.7ms
PAUSE 20 20ms
NEXT 1.4ms
1.7+1.3+20+1.4=24.4ms
3000/24.4 =122.95
RETURN

Pivotare stanga:
FOR x = 1 TO 124 ' ruleaza timp de 3 secunde
PULSOUT 12, 750 1.5ms
PULSOUT 13, 650 1.3ms
PAUSE 20 20ms
NEXT 1.4ms
1.5+1.3+20+1.4=24.2ms
3000/24.2 =123.96
Pivotare dreapta:
FOR x = 1 TO 122 ' ruleaza timp de 3 secunde
PULSOUT 12, 850 1.7ms
PULSOUT 13, 750 1.5ms
PAUSE 20 20ms
NEXT 1.4ms
1.7+1.5+20+1.4=24.6ms
3000/24.6 =121.95

Rotatie stanga:
FOR x = 1 TO 125 ' ruleaza timp de 3 secunde
PULSOUT 12, 650 1.3ms
PULSOUT 13, 650 1.3ms
PAUSE 20 20ms
NEXT 1.4ms
1.3+1.3+20+1.4=24ms
3000/24 =125

Rotatie dreapta:
FOR x = 1 TO 121 ' ruleaza timp de 3 secunde
PULSOUT 12, 850 1.7ms
PULSOUT 13, 850 1.7ms
PAUSE 20 20ms
NEXT 1.4ms
1.7+1.7+20+1.4=24.8ms
3000/24.8 =120.96
3. Se consider c pentru a se roti dreapta cu 180 de grade Boe-Bot-ul are nevoie de 48 de impulsuri . Scriei
subrutinele prin care se rotete cu 15, 45, 60 respectiv 120 grade ! Scriei un program prin care robotul parcurge un
triunghi echilateral cu latura de 20cm (o secund ).
regula de 3 simpla...
180 grade .... 48 impulsuri
15 grade .... x impulsuri
----------------------------------------------------------------------------------------------------------

x = 48*15/180 => 4 impulsuri

45 grade = 3*15 grade => 12 impulsuri


60 grade = 180 grade / 3 => 16 impulsuri
120 grade = 2* 60 grade => 32 impulsuri

X VAR BYTE
rotire15grade:
FOR X = 1 TO 4
PULSOUT 13, 850
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN

rotire45grade:
FOR X = 1 TO 12
PULSOUT 13, 850
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN
rotire60grade:
FOR X = 1 TO 16
PULSOUT 13, 850
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN

rotire120grade:
FOR X = 1 TO 32
PULSOUT 13, 850
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN

x VAR Word
GOSUB Mers
GOSUB rotire60grade
GOSUB Mers
GOSUB rotire60grade
GOSUB Mers
GOSUB rotire60grade
END
Mers:
FOR x= 1 TO 41
PULSOUT 13, 650 dureaza 1.7 ms (850 *2us)
PULSOUT 12, 850 dureaza 1.3 ms (650 *2us)
PAUSE 20 dureaza 20 ms
NEXT dureaza 1.4ms sa execute bucla
RETURN
1.7+1.3+20+1.4 = 24.4 ms
1000/24.4= 40.9

4. Scriei o subrutin n care Boe-Botul merge nainte o secund pivoteaz stnga cu ramp i continu s mearg n
linie dreapt 3 secunde.
X VAR WORD
FOR X = 1 TO 41 'inainte o secunda... din nou... din exercitiu 1...
PULSOUT 12, 850
PULSOUT 13, 650
PAUSE 20
NEXT
FOR X = 750 TO 650 STEP -1 'pivotare stanga cu rampa
PULSOUT 13, X
PULSOUT 12, 750
PAUSE 20
NEXT
FOR X = 1 TO 123 'inainte 3 secunde
PULSOUT 12, 850
PULSOUT 13, 650
PAUSE 20
NEXT
RETURN
END

5. Date iniiale : Servomotor stnga conectat la P12, servomotor dreapta la P13, difuzor piezoelectric conectat la
P0.
Pseudocodul programulu este :
- Emite un sunet cu frecvena de 1 KHz i durata de 1 sec.
- Pornete nainte, n ramp cu acceleraia minim,
- Emite un sunet de frecven 2KHz i durat 0,5 secunde.
- merge n palier 3 secunde,
-frneaz cu acceleraie dubl (negativ)
- St 1 secund ,
- pornete napoi cu profilul de vitez de mers nainte,
- Semnalizeaz sfritul cursei cu un semnal de 1KHz micsat cu 500 Hz cu durata de 1,5 secunde.
Scriei codul programului cu comentarii.
X VAR BYTE
FREQOUT 0, 1000, 1000
FOR X = 0 TO 100 'inainte rampa
PULSOUT 12, 750 + X
PULSOUT 13, 750 -X
PAUSE 20
NEXT
FREQOUT 0 500 2000
FOR X = 1 TO 123 inainte 3 secunde...
PULSOUT 12, 850
PULSOUT 13, 650
PAUSE 20
NEXT
FOR X = 100 TO 0 STEP -2 'frana cu acceleratie dubla
PULSOUT 12, 750 + X
PULSOUT 13, 750 -X
PAUSE 20
NEXT
PAUSE 1000 'freaca menta 1 secunda
FOR X = 0 TO 100 STEP 2 'spate cu acceleratie dubla
PULSOUT 12, 750 - X
PULSOUT 13, 750 +X
PAUSE 20
NEXT
FOR X = 1 TO 123 'spate 3 secunde...
PULSOUT 12, 650
PULSOUT 13, 850
PAUSE 20
NEXT
FOR X = 100 TO 0 STEP -1 'frana cu acceleratie normala
PULSOUT 12, 750 - X
PULSOUT 13, 750 +X
PAUSE 20
NEXT
FREQOUT 0 1500 1000 500 'semnalizeaza sfarsitul cursei'
END

Referine Ch.6 pg.200

7. Navigare Boe-Bot cu fotorezistene i urmrirea luminii (ocolire obstacole).


Date iniiale: servomotor stnga conectat la P12, servomotor dreapta la P13. Fotorezistene n divizor de tensiune la
stnga P.., dreapta la P
a) Desenai schema electric a montajului folosind simboluri standard i notaii de tip Px , Rx, simbol fotorezisten FRx
b) Scriei un program prin care afiai starea fotorezistenelor (intuneric 0 i lumin 1) la interval de 0,05 sec.
c) Pseudocodul programului de navigare cu fotorezistene este:
- dac ambele sunt n ntuneric : merge napoi , face stnga i iar stnga,
- dac stnga este n intuneric, merge dreapta,
- dac dreapta este in ntunerc face stnga
- dac nici una nu este n ntuneric merge nainte.
Desenai organigrama programului i scriei codul acestuia i comentarii n PBASIC !

a)

b) DO

DEBUG "Stanga: ", INs 'trebe sa schimbi INs cu ce pin zice ca ii la stanga... de ex IN3.. cu INd la fel
DEBUG "Dreapta: ", INd , CR
PAUSE 50
LOOP
END
c)

X VAR BYTE
DO
IF (INs = 0) AND (INd = 0) THEN 'ambele intuneric: inapoi, dupaia stanga, si inca o data stanga....
FOR X = 1 TO 41 'inapoi o secunda
PULSOUT 12, 650
PULSOUT 13, 850
PAUSE 20
NEXT
FOR X = 1 TO 25 'rotire 90 grade spre stanga
PULSOUT 13, 650
PULSOUT 12,650
PAUSE 20
NEXT
FOR X = 1 TO 25 'rotire 90 grade spre stanga
PULSOUT 13, 650
PULSOUT 12, 650
PAUSE 20
NEXT
ELSEIF (INs = 1) AND (INd = 0) THEN 'dreapta intuneric: mergi in stanga
PULSOUT 12, 650
PULSOUT 13, 650
PAUSE 20
ELSEIF (INs = 0) AND (INd = 1) THEN 'stanga intuneric: mergi dreapta
PULSOUT 12, 850
PULSOUT 13, 850
PAUSE 20
ELSE 'ambele lumina: merge inainte
PULSOUT 12, 850
PULSOUT 13, 650
PAUSE 20
ENDIF
LOOP
END
Referine Ch.6 pg.203

8. Navigare Boe-Bot cu fotorezistene i urmrirea unui obstacol (umbr )


Date iniiale: servomotor stnga conectat la P12, servomotor dreapta la P13. Fotorezistene n divizor de tensiune la
stnga P.., dreapta la P
a) Desenai schema electric a montajului folosind simboluri standard i notaii de tip Px , Rx, simbol fotorezisten FRx
b) Scriei un program prin care afiai starea fotorezistenelor (intuneric 0 i lumin 1) la interval de 0,05 sec.
c) Pseudocodul programului de navigare cu fotorezistene este:
- dac ambele sunt n ntuneric : merge nainte,
- dac stnga este n intuneric, merge stnga,
- dac dreapta este in ntunerc face dreapta
- dac nici una nu este n ntuneric st pe loc.
Desenai organigrama programului i scriei codul acestuia i comentarii n PBASIC !

a)
b) DO

DEBUG "Stanga: ", INs 'trebe sa schimbi INs cu ce pin zice ca ii la stanga... de ex IN3.. cu INd la fel
DEBUG "Dreapta: ", INd , CR
PAUSE 50
LOOP
END

c)

DO
IF (INs = 1) AND (INd = 1) THEN 'ambele lumina: sta pe loc
PULSOUT 12, 750
PULSOUT 13, 750
PAUSE 20
ELSEIF (INs = 0) AND (INd = 1) THEN 'dreapta intuneric: mergi in stanga
PULSOUT 12, 650
PULSOUT 13, 650
PAUSE 20
ELSEIF (INs = 1) AND (INd = 0) THEN 'stanga intuneric: mergi dreapta
PULSOUT 12, 850
PULSOUT 13, 850
PAUSE 20
ELSE 'ambele intuneric: merge inainte
PULSOUT 12, 850
PULSOUT 13, 650
PAUSE 20
ENDIF
LOOP
END
Referine Ch.6 pg.205

9 Navigare avansat cu fotorezisten, urmrirea luminii


Date iniiale: Robotul Boe-Bot , dou fotorezistene n circuit Rctime conectate la porturile P.. stnga i P...dreapta.
Pseudocodul programului :Robotul msoar lumina din dreapta i cea din stnga i face o medie i o diferen. Dac
lumina dreapta mai mare dec stnga + diferena face dreapta, Dac lumina stnga mai mare dect dreapta plus diferen
face stnga. Dac nu se ntmpl cele dou condiii robotul merge nainte .
Cerine : a) Schema electric a montajului
b) Ordinograma
c) codul programului cu comentarii

a)
b)

c) timeLeft VAR WORD


timeRight VAR WORD
medie VAR WORD
diferenta VAR WORD
DO
HIGH 2
PAUSE 3
RCTIME 2,1,timeLeft 'citeste senzor stanga
HIGH 3
PAUSE 3
RCTIME 3,1,timeRight 'citeste senzor dreapta
medie = timeRight + timeLeft / 2 'calculeaza media
diferenta = average / 6 'calculeaza diferenta
IF (timeLeft > timeRight + diferenta) THEN 'stanga
PULSOUT 13, 650
PULSOUT 12, 650
ELSEIF (timeRight > timeLeft + diferenta) THEN 'dreapta
PULSOUT 13, 850
PULSOUT 12, 850
ELSE
PULSOUT 13, 850 'inainte
PULSOUT 12, 650
ENDIF
PAUSE 20
LOOP
END
Chapter 7: Navigating with Infrared Headlights
Referine pg.252
10. Navigare Boe-Bot cu senzori infrarou frontali
Date iniiale: Servomotor stnga conectat la P12, servomotor dreapta la P13. Emitor infrarou stnga P, receptor
stnga P, emitor dreapta P receptor dreapta P
a) Desenai schema electric a montajului folosind simboluri standard i notaii de tip Px , Rx, symbol emitor i receptor
infra.
b) Scriei un program prin care afiai starea receptorilor infrarou (liber 1 i obstacol 0) la interval de 0,05 sec.
c) Pseudocodul programului de navigare cu infrarou:
- dac ambele perechi sesizeaz un obstacol : Boe Bot merge napoi , face stnga i iar stngaa,
- dac stnga sesizeaz obstacol, merge dreapta,
- dac dreapta sesizez face stnga
- dac nici una nu sesizeaz merge nainte.

a)

b)

irL VAR BIT


irR VAR BIT
DO
FREQOUT 2, 1, 38500
irL = IN3
FREQOUT 4, 1, 38500
irR = IN5
DEBUG "Stanga: ", irL
DEBUG " Dreapta: ", irR, CR
PAUSE 50
LOOP
c)

irL VAR BIT


irR VAR BIT
X VAR BYTE
DO
FREQOUT 2, 1, 38500
irL = IN3 'citeste senzori
FREQOUT 4, 1, 38500
irR = IN5
IF (irL = 0) AND (irR = 0) THEN
FOR X = 1 TO 41 'inapoi o secunda
PULSOUT 12, 650
PULSOUT 13, 850
PAUSE 20
NEXT
FOR X = 1 TO 24 'rotire 90 grade spre stanga
PULSOUT 13, 850
PULSOUT 12, 850
PAUSE 20
NEXT
FOR X = 1 TO 24 'rotire 90 grade spre stanga
PULSOUT 13, 850
PULSOUT 12, 850
PAUSE 20
NEXT
ELSEIF (irL =0) AND (irR =1) THEN
PULSOUT 12, 850 'dreapta
PULSOUT 13, 750
PAUSE 20
ELSEIF (irL = 1) AND (irR =0) THEN
PULSOUT 12, 750 'stanga
PULSOUT 13, 650
PAUSE 20
ELSE
PULSOUT 12, 850 'mergi inainte
PULSOUT 13, 650
PAUSE 20
ENDIF
LOOP
END

Desenai organigrama programului i scriei codul acestuia n PBASIC !


Referine pg.258

11. 10. Navigare Boe-Bot cu senzori infrarou frontali DROP-OFF


Date iniiale: Servomotor stnga conectat la P12, servomotor dreapta la P13. Emitor infrarou stnga P, receptor
stnga P, emitor dreapta P receptor dreapta P
a) Desenai schema electric a montajului folosind simboluri standard i notaii de tip Px , Rx, symbol emitor i receptor
infra.
b) Scriei un program prin care afiai starea receptorilor infrarou (liber 1 i obstacol 0) la interval de 0,05 sec.
c) Pseudocodul programului de navigare cu infrarou: Dac detecteaz masa merge nainte 1 ciclu. Dac unul nu
detecteaz se rotete n direcie opus 10 cicluri, dac ambele receptoare nu detecteaz merge napoi 15 cicluri .
Desenai organigrama programului i scriei codul acestuia n PBASICcu comentarii.

a)

b)
irL VAR BIT
irR VAR BIT
DO
FREQOUT 2, 1, 38500
irL = IN3
FREQOUT 4, 1, 38500
irR = IN5
DEBUG "Stanga: ", irL
DEBUG " Dreapta: ", irR, CR
PAUSE 50
LOOP
c)

irL VAR BIT


irR VAR BIT
X VAR NIBBLE
DO
FREQOUT 2, 1, 38500 'citeste senzori
irL = IN3
FREQOUT 4, 1, 38500
irR = IN5
IF (irL = 0) AND (irR = 0) THEN
PULSOUT 12, 850 'masa e acolo.... mergi inainte 1 impuls
PULSOUT 13, 650
PAUSE 20
ELSEIF (irL = 1) AND (irR = 0) THEN 'nu e masa in stanga... rotire dreapta 10 impulsuri
FOR X = 1 TO 10
PULSOUT 12, 850
PULSOUT 13, 850
PAUSE 20
NEXT
ELSEIF (irL = 0) AND (irR = 1) THEN 'nu e masa in dreapta... rotire stanga 10 impulsuri
FOR X = 1 TO 10
PULSOUT 12, 650
PULSOUT 13, 650
PAUSE 20
NEXT
ELSE
FOR X = 1 TO 15 'robotul zboara... mergi inapoi 15 impulsuri
PULSOUT 12, 650
PULSOUT 13, 850
PAUSE 20
NEXT
ENDIF
LOOP
END

S-ar putea să vă placă și