You are on page 1of 10

Control Systems LAB

Student: Breno Henrique Tavares Gomes


Instructor: Dr. Bahram Shahian
Course number: 5141
Section: 01

Lab number 2

02/05/2015

Objective: Complete all challenge of chapter 1


For all challenge the same circuit is used. But some parts are not used in some
challenges.

Components:
3 Resistors 220 ohms;
1 Resistor 1k ohms;
1 Buzzer;
1 Red LED;
1 LDR(Light Dependent Resistor);
1 Pushbutton;
1 Homework Board;

Circuit:

Where: R1=R3=R4=220 ohms; R1=1k ohms and C1=0.1 microF

Challenge 1 Modify the activity 1 using TRUE or FALSE instead of YES or NO


Answer:

Challenge 2 Code a program according with the following flowchart:

Answer:
' {$STAMP BS2}
' {$PBASIC 2.5}
' Breno Henrique Tavares Gomes
OUTPUT 5
INPUT 0
Main:
OUT5=1
PAUSE 500
FREQOUT 10, 1000, 1900
OUT5=0
PAUSE 500

GOTO Main

Challenge 3
Answer:
' -----[ Title ]------------------' {$STAMP BS2}
' {$PBASIC 2.5}
' Breno Henrique Tavares Gomes

' -----[ Declarations ]---------------------------------------------------Photo

PIN 10

LED

PIN 5

Buzzer
PB

PIN 10
PIN 13

PBVal

VAR Bit

' Alias for photo resistor circuit on P0


' Alias for LED on P5
' Alias for buzzer on P10
' Alias for pushbutton on P13
' Bit variable to hold pushbutton value

' -----[ Main Routine ]---------------------------------------------------DO ' ******** Read Pushbutton


PBVal = PB

' Read Pushbutton Value and assign to PBVal

' ******** Display Pushbutton value


DEBUG CLS,"Pushbutton value = ", DEC PBVal,CR
' ******** Button Pressed Conditional and Code
IF (PBVal = 0) THEN ' If pushbutton pressed is true then,
FREQOUT 10, 1000, 2000
ELSE
HIGH LED

' blink the LED

PAUSE 500
LOW LED
ENDIF
' ******** 1/4 second pause
PAUSE 500
LOOP

' Loop back to DO to repeat continuously

Challenge 4
Answer:

Code:
' {$STAMP BS2}
' {$PBASIC 2.5}
' Breno Henrique Tavares Gomes
' -----[ Declarations ]---------------------------------------------------Photo

PIN 0

' Alias for photo resistor circuit on P0

LED

PIN 5

' Alias for LED on P5

Buzzer

PIN 10

' Alias for buzzer on P10

PhotoVal VAR Word ' Variable to hold RC Time value


PhotoMin VAR Word ' Holds minimum light level value
PhotoMax VAR Word ' Hold maximum light level value
' ---[ Initialization ] -----------------------------------------------------PhotoMin = 500

' Set minimum light value

PhotoMax = 5000
PAUSE 1000

' Set maximum light value


' Allow connection to stabilize -- for Chapter 2

' -----[ Main Routine ]---------------------------------------------------DO


GOSUB ReadPhoto
GOSUB CheckLightHigh
GOSUB CheckLightLow
GOSUB Checksystem
PAUSE 500
LOOP

' -----[ Subroutines ]----------------------------------------------------ReadPhoto:

' Read light level and plot values

HIGH Photo
PAUSE 10
RCTIME Photo,1,PhotoVal
DEBUG DEC PhotoVal, ",", DEC PhotoMin, "," ,DEC PhotoMax,CR
RETURN
CheckLightHigh:

' Test if high light level

IF (PhotoVal < PhotoMin) THEN


DEBUG "LIGHT LEVEL HIGH!",CR
FREQOUT Buzzer,100,3000
PAUSE 100
ENDIF
RETURN

CheckLightLow:

' Test if low light level

IF (PhotoVal > PhotoMax) THEN


DEBUG "LIGHT LEVEL LOW!",CR
FREQOUT Buzzer,200,1000
PAUSE 200
ENDIF
RETURN

Checksystem:
HIGH 5
PAUSE 250
LOW 5
RETURN

Challenge 5
Answer:
' {$STAMP BS2}
' {$PBASIC 2.5}
'Breno Henrique Tavares Gomes
' -----[ Declarations ]---------------------------------------------------Photo

PIN 0

' Alias for photo resistor circuit on P0

LED

PIN 5

' Alias for LED on P5

Buzzer PIN 10

' Alias for buzzer on P10

PB

' Alias for pushbutton on P13

PBVal

PIN 13
VAR Bit

' Bit variable to hold pushbutton value

PhotoVal VAR Word

' Variable to hold RC Time value

FreqVal VAR Word

' Frequency to sound

CountVal VAR Byte

' Number of tones to sound

VAR Byte

' General Counting variable

Duration VAR Word

' Duration of tone in mili seconds

' -----[ Main Routine ]----------------------------------------------------

DO
GOSUB WaitForButton
GOSUB GetFreq
GOSUB GetCount
GOSUB GetDuration
GOSUB SoundTone
PAUSE 1000
LOOP
' -----[ Subroutines ]-----------------------------------------------------

WaitForButton:
DEBUG CLS, "Press the pushbutton to begin",CR
DO
LOOP WHILE (PB=1)
RETURN

GetFreq:
DO
DEBUG CR,"Enter the frequency to play (1 to 4000)",CR
DEBUGIN DEC FreqVal
LOOP UNTIL (FreqVal <= 4000) ' loop until within range
RETURN

GetCount:
DO
DEBUG CR,"Enter the number of times to play (1 to 10)",CR
DEBUGIN DEC CountVal
LOOP WHILE (CountVal > 10)
RETURN

GetDuration:
DO

' loop while out of range

DEBUG CR,"Enter the duration of the tone (1 to 1000 seconds)",CR


DEBUGIN DEC Duration
LOOP WHILE (Duration > 1000)

' loop out of range

RETURN

SoundTone:
FOR X = 1 TO CountVal

' Start X at 1 for counting up to CountVal

FREQOUT Buzzer,Duration,FreqVal
DEBUG "Buzzing ", DEC X,CR
NEXT
RETURN

' Add 1 to X and loop if X <= CountVal

You might also like