Aspectos digitais
Anderson M. Amaral
Agosto - 2017
Como configurar um pino para ler sinais digitais?
unsigned char i;
pinMode(13, INPUT); // Configura pino como entrada
i = DigitalRead(13, 1); // Ler valor
E usando uma abordagem mais tradicional?
unsigned char i;
PORTB = (1<<PB0); /* Define pull-ups and set outputs high */
DDRB = (1<<DDB0);/* Define directions for port pins */
__no_operation(); /* Insert nop for synchronization*/
i = PINB; /* Read port pins */
Blink (Assembly):
; Assembly Code:
.include "m328Pdef.inc"
start:
SBI DDRB,5
blink: LDI r20,250
CALL delay_n_ms
SBI PORTB,5
LDI r20,250
CALL delay_n_ms
CBI PORTB,5
JMP blink
.include "delay_n_ms.h"
Blink (Python, ex. hipotético):
PWM(PORTB_PIN_5, 1000, 1000)
Que tipo de programação do microcontrolador ATmega possui mais alto nível?
Arquivo\Exemplos\01. Basics\Blink
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino model, check
the Technical Specs of your board at https://www.arduino.cc/en/Main/Products
This example code is in the public domain.
modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman
*/
\* Documentação *\
)Comentário ao final de uma linha:
int x; //Comentario
Comentário utilizando muitas linhas: cpp \* Comentario *\
Configurações iniciais do sistema (void setup(){}
)
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // initialize digital pin LED_BUILTIN as an output.
}
pinMode(pin, type);
Nota: Ao final de cada linha de código em C, terminar com ;
Loop do sistema (void loop(){}
)
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
pseudo-código:
1) Liga LED;
2) Aguarda 1000ms;
3) Desliga LED;
4) Aguarda 1000ms;
5) Retorna ao passo 1).
digitalWrite(pin, Value)
e delay(ms)
.
Arquivo\Exemplos\01. Basics\DigitalReadSerial
Documentação
/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the serial monitor
This example code is in the public domain.
*/
Como fazer para que o sinal na porta serial seja 1 quando o botão não está pressionado? Não faça modificações no programa.