Você está na página 1de 3

SISTEMAS OPERATIVOS

12.º Ano – Curso Profissional de Técnico de Gestão e Programação de Sistemas


Informáticos
Ano letivo 2018/2019

Módulo 4: Sistema Operativo Open Source - Arduino


Ficha de Trabalho n.º 6

Atividade 1: Semáforo sequencial com botão


O principal objetivo é escrever um programa que, depois do botão ser pressionado,
mostre uma sequência correta de luzes. Vamos assumir o seguinte ciclo:
[…] Verde -> Amarelo -> Vermelho -> Amarelo -> Vermelho […]

Material necessário:
 1x Placa Arduino UNO e cabo USB;
 1x Protoboard;
 3x LED’s (vermelho, amarelo e verde);
 1x Botão de Pressão;
 3x Resistência 330Ω;
 6x Cabos jumper.

A ligação deverá ser realizada de acordo com o esquema abaixo. Quando pressionar
o botão, o sistema deve iniciar a sequência.

Inicialmente, cria-se um programa para configurar as entradas e saídas.


void setup() {
pinMode(10, OUTPUT); //LED vermelho
pinMode(9, OUTPUT); //LED amarelo
pinMode(8, OUTPUT); //LED verde

pinMode(7, INPUT_PULLUP); //Botão

Prof.ª Paula Almeida Página 1 de 3


SISTEMAS OPERATIVOS
12.º Ano – Curso Profissional de Técnico de Gestão e Programação de Sistemas
Informáticos
Ano letivo 2018/2019

digitalWrite(10, LOW); //Desligar os LEDs


digitalWrite(9, LOW);
digitalWrite(8, LOW);
}

Depois escreve-se o código que faça que as luzes mudem automaticamente a cada
segundo.
void setup() {
pinMode(10, OUTPUT); //LED vermelho
pinMode(9, OUTPUT); //LED amarelo
pinMode(8, OUTPUT); //LED verde

pinMode(7, INPUT_PULLUP); //Botão

digitalWrite(10, LOW); //Desligar os LEDs


digitalWrite(9, LOW);
digitalWrite(8, LOW);
}

void loop()
{
digitalWrite(10, LOW); //Vermelho
digitalWrite(9, LOW); //Amarelo
digitalWrite(8, HIGH); //Verde

delay(1000); //Esperar 1 segundo

digitalWrite(10, LOW); //Vermelho


digitalWrite(9, HIGH); //Amarelo
digitalWrite(8, LOW); //Verde

delay(1000); //Esperar 1 segundo

digitalWrite(10, HIGH); //Vermelho


digitalWrite(9, LOW); //Amarelho
digitalWrite(8, LOW); //Verde

delay(1000); //Esperar 1 segundo

digitalWrite(10, HIGH); //Vermelho


digitalWrite(9, HIGH); //Amarelo
digitalWrite(8, LOW); //Verde

delay(1000); //Esperar 1 segundo


}

Prof.ª Paula Almeida Página 2 de 3


SISTEMAS OPERATIVOS
12.º Ano – Curso Profissional de Técnico de Gestão e Programação de Sistemas
Informáticos
Ano letivo 2018/2019

Atividade 2: Semáforo quando o botão for pressionado


Nesta atividade, vai-se utilizar a função loop while (), que é executada quando uma
certa condição for cumprida (verdadeira).

void setup() {
pinMode(10, OUTPUT); //LED vermelho
pinMode(9, OUTPUT); //LED amarelo
pinMode(8, OUTPUT); //LED verde

pinMode(7, INPUT_PULLUP); //Botão

digitalWrite(10, LOW); //Desligar LED


digitalWrite(9, LOW);
digitalWrite(8, LOW);
}

void loop()
{
digitalWrite(10, LOW); //Vermelho
digitalWrite(9, LOW); //Amarelo
digitalWrite(8, HIGH); //Verde

delay(1000); //Parar o programa durante 1 segundo


while (digitalRead(7) == HIGH) {} //Quando o botão é pressionado

digitalWrite(10, LOW); //Vermelho


digitalWrite(9, HIGH); //Amarelo
digitalWrite(8, LOW); //Verde

delay(1000); //Parar o programa durante 1 segundo


while (digitalRead(7) == HIGH) {} //Quando o botão é pressionado

digitalWrite(10, HIGH); //Vermelho


digitalWrite(9, LOW); //Amarelo
digitalWrite(8, LOW); //Verde

delay(1000); //Parar o programa durante 1 segundo


while (digitalRead(7) == HIGH) {} //Quando o botão é pressionado

digitalWrite(10, HIGH); //Vermelho


digitalWrite(9, HIGH); //Amarelo
digitalWrite(8, LOW); //Verde

delay(1000); //Parar o programa durante 1 segundo


while (digitalRead(7) == HIGH) {} //Quando o botão é pressionado
}

Prof.ª Paula Almeida Página 3 de 3

Você também pode gostar