Oficina de Programa¸ c˜ ao utilizando a plataforma Arduino
Kaya Sumire Abe [email protected]
Paulo Nesello K¨ unzel kruger [email protected]
Bianca Alberton [email protected]
Programa de Educa¸c˜ao Tutorial Computando Culturas em Equidade Departamento Acadˆemico de Inform´atica
UTFPR
20 de outubro de 2012
PET - CoCE (UTFPR) Oficina de Programa¸c˜ao 20 de outubro de 2012 1 / 19
Projeto 8: Switch-case
O que precisaremos?
1 LDR
2 resistores de 10 kΩ ou valor aproximado
Circuito utilizado
PET - CoCE (UTFPR) Oficina de Programa¸c˜ao 20 de outubro de 2012 3 / 19
O que h´ a de novo?
Fun¸ c˜ oes da biblioteca Arduino
map(valor , pisoValor , tetoValor , limiteInferior, limiteSuperior); - Fun¸ c˜ ao que faz uma regra de trˆ es para colocar um determinado valor em uma faixa desej´ avel, de acordo com sua propor¸ c˜ ao
Estruturas de programa¸ c˜ ao
switch-case - if mais elaborado!
O que h´ a de novo?
Fun¸ c˜ oes da biblioteca Arduino
map(valor , pisoValor , tetoValor , limiteInferior, limiteSuperior); - Fun¸ c˜ ao que faz uma regra de trˆ es para colocar um determinado valor em uma faixa desej´ avel, de acordo com sua propor¸ c˜ ao
Estruturas de programa¸ c˜ ao
switch-case - if mais elaborado!
PET - CoCE (UTFPR) Oficina de Programa¸c˜ao 20 de outubro de 2012 4 / 19
O que h´ a de novo?
Fun¸ c˜ oes da biblioteca Arduino
map(valor , pisoValor , tetoValor , limiteInferior, limiteSuperior); - Fun¸c˜ ao que faz uma regra de trˆ es para colocar um determinado valor em uma faixa desej´ avel, de acordo com sua propor¸ c˜ ao
Estruturas de programa¸ c˜ ao
switch-case - if mais elaborado!
O que h´ a de novo?
Fun¸ c˜ oes da biblioteca Arduino
map(valor , pisoValor , tetoValor , limiteInferior, limiteSuperior); - Fun¸c˜ ao que faz uma regra de trˆ es para colocar um determinado valor em uma faixa desej´ avel, de acordo com sua propor¸ c˜ ao
Estruturas de programa¸ c˜ ao
switch-case - if mais elaborado!
PET - CoCE (UTFPR) Oficina de Programa¸c˜ao 20 de outubro de 2012 4 / 19
C´ odigo I
c o n s t int s e n s o r M i n = 0;
c o n s t int s e n s o r M a x = 6 0 0 ;
v o i d s e t u p () {
S e r i a l . b e g i n ( 9 6 0 0 ) ;
}
v o i d l o o p () {
int s e n s o r R e a d i n g = a n a l o g R e a d ( A0 ) ;
int r a n g e = map ( s e n s o r R e a d i n g , s e n s o r M i n , s e n s o r M a x , 0 , 3) ;
// faz a l g o d i f e r e n t e , d e p e n d e n d o do v a l o r de r a n g e
s w i t c h ( r a n g e ) {
c a s e 0:
S e r i a l . p r i n t l n ( " d a r k " ) ;
b r e a k ;
c a s e 1:
S e r i a l . p r i n t l n ( " dim " ) ;
C´ odigo II
b r e a k ;
c a s e 2:
S e r i a l . p r i n t l n ( " m e d i u m " ) ;
b r e a k ;
c a s e 3:
S e r i a l . p r i n t l n ( " b r i g h t " ) ;
b r e a k ;
}
d e l a y ( 1 0 0 0 ) ;
}
PET - CoCE (UTFPR) Oficina de Programa¸c˜ao 20 de outubro de 2012 6 / 19
Projeto 8.2: outro circuito...
O que precisaremos?
5 LED’s
5 resistores de 220 kΩ ou valor aproximado
Circuito utilizado
PET - CoCE (UTFPR) Oficina de Programa¸c˜ao 20 de outubro de 2012 8 / 19
O que h´ a de novo?
Estruturas de programa¸ c˜ ao
switch-case - Op¸ c˜ ao default : vale para todos os outros casos
O que h´ a de novo?
Estruturas de programa¸ c˜ ao
switch-case - Op¸ c˜ ao default : vale para todos os outros casos
PET - CoCE (UTFPR) Oficina de Programa¸c˜ao 20 de outubro de 2012 9 / 19
C´ odigo I
v o i d s e t u p () {
S e r i a l . b e g i n ( 9 6 0 0 ) ;
for ( int t h i s P i n = 2; t h i s P i n < 7; t h i s P i n ++) {
p i n M o d e ( thisPin , O U T P U T ) ;
}
}
v o i d l o o p () {
if ( S e r i a l . a v a i l a b l e () > 0) {
int i n B y t e = S e r i a l . r e a d () ;
// o switch - c a s e r e c e b e a p e n a s v a l o r e s n u m e r i c o s p a r a a e s c o l h a das a l t e r n a t i v a s
// d e s t a forma , c o l o c a m o s as a s p a s p a r a i n d i c a r que s e r a u t i l i z a d o o v a l o r n u m e r i c o
c o r r e s p o n d e n t e ao c a r a c t e r
// os v a l o r e s sao b a s e a d o s na t a b e l a A S C I I
// por exemplo , ’ a ’ = 97 , ’ b ’ = 98 , e a s s i m por d i a n t e
C´ odigo II
s w i t c h ( i n B y t e ) {
c a s e ’ a ’ :
d i g i t a l W r i t e (2 , H I G H ) ;
b r e a k ;
c a s e ’ b ’ :
d i g i t a l W r i t e (3 , H I G H ) ;
b r e a k ;
c a s e ’ c ’ :
d i g i t a l W r i t e (4 , H I G H ) ;
b r e a k ;
c a s e ’ d ’ :
d i g i t a l W r i t e (5 , H I G H ) ;
b r e a k ;
c a s e ’ e ’ :
d i g i t a l W r i t e (6 , H I G H ) ;
b r e a k ;
d e f a u l t :
// d e s l i g a t o d o s os L E D s
PET - CoCE (UTFPR) Oficina de Programa¸c˜ao 20 de outubro de 2012 11 / 19
C´ odigo III
for ( int t h i s P i n = 2; t h i s P i n < 7;
t h i s P i n ++) {
d i g i t a l W r i t e ( thisPin , LOW ) ;
}
}
}
}
Projeto 9: Buzzer
O que precisaremos?
Buzzer
Resistores de 100 kΩ ou valor aproximado
PET - CoCE (UTFPR) Oficina de Programa¸c˜ao 20 de outubro de 2012 13 / 19
Circuito utilizado
O que h´ a de novo?
Vari´ aveis
1000L - Converte 1000 para long int. Fun¸ c˜ oes da biblioteca Arduino
delayMicroseconds(tone); - Ao inv´ es de o delay ser dado em milisegundos (0,001 s), ele ´ e dado em microsegundos(0,000 001).
PET - CoCE (UTFPR) Oficina de Programa¸c˜ao 20 de outubro de 2012 15 / 19
O que h´ a de novo?
Vari´ aveis
1000L - Converte 1000 para long int. Fun¸ c˜ oes da biblioteca Arduino
delayMicroseconds(tone); - Ao inv´ es de o delay ser dado em
milisegundos (0,001 s), ele ´ e dado em microsegundos(0,000 001).
O que h´ a de novo?
Vari´ aveis
1000L - Converte 1000 para long int.
Fun¸ c˜ oes da biblioteca Arduino
delayMicroseconds(tone); - Ao inv´ es de o delay ser dado em milisegundos (0,001 s), ele ´ e dado em microsegundos(0,000 001).
PET - CoCE (UTFPR) Oficina de Programa¸c˜ao 20 de outubro de 2012 15 / 19
O que h´ a de novo?
Vari´ aveis
1000L - Converte 1000 para long int.
Fun¸ c˜ oes da biblioteca Arduino
delayMicroseconds(tone); - Ao inv´ es de o delay ser dado em
milisegundos (0,001 s), ele ´ e dado em microsegundos(0,000 001).
O que h´ a de novo?
Vari´ aveis
1000L - Converte 1000 para long int.
Fun¸c˜ oes da biblioteca Arduino
delayMicroseconds(tone); - Ao inv´ es de o delay ser dado em milisegundos (0,001 s), ele ´ e dado em microsegundos(0,000 001).
PET - CoCE (UTFPR) Oficina de Programa¸c˜ao 20 de outubro de 2012 15 / 19
O que h´ a de novo?
Vari´ aveis
1000L - Converte 1000 para long int.
Fun¸c˜ oes da biblioteca Arduino
delayMicroseconds(tone); - Ao inv´ es de o delay ser dado em
milisegundos (0,001 s), ele ´ e dado em microsegundos(0,000 001).
C´ odigo I
int s p e a k e r P i n = 9;
int l e n g t h = 15; // n u m e r o de n o t a s
c h a r n o t e s [] = " c c g g a a g f f e e d d c " ; // um e s p a c o r e p r e s e n t a um i n t e r v a l o
int b e a t s [] = { 1 , 1 , 1 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 4 };
int t e m p o = 3 0 0 ;
v o i d p l a y T o n e ( int tone , int d u r a t i o n ) {
for ( l o n g i = 0; i < d u r a t i o n * 1 0 0 0 L ; i += t o n e * 2) {
d i g i t a l W r i t e ( s p e a k e r P i n , H I G H ) ;
d e l a y M i c r o s e c o n d s ( t o n e ) ;
d i g i t a l W r i t e ( s p e a k e r P i n , LOW ) ;
d e l a y M i c r o s e c o n d s ( t o n e ) ;
}
}
PET - CoCE (UTFPR) Oficina de Programa¸c˜ao 20 de outubro de 2012 16 / 19
C´ odigo II
v o i d p l a y N o t e ( c h a r note , int d u r a t i o n ) {
c h a r n a m e s [] = { ’ c ’ , ’ d ’ , ’ e ’ , ’ f ’ , ’ g ’ , ’ a ’ , ’ b ’ ,
’ C ’ };
int t o n e s [] = { 1915 , 1700 , 1519 , 1432 , 1275 , 1136 , 1014 , 956 };
// t o c a a n o t a c o r r e s p o n d e n t e ao ‘ ‘ n o m e ’ ’ da n o t a
for ( int i = 0; i < 8; i ++) {
if ( n a m e s [ i ] == n o t e ) {
p l a y T o n e ( t o n e s [ i ] , d u r a t i o n ) ;
}
}
}
v o i d s e t u p () {
p i n M o d e ( s p e a k e r P i n , O U T P U T ) ;
}
v o i d l o o p () {
C´ odigo III
for ( int i = 0; i < l e n g t h ; i ++) {
if ( n o t e s [ i ] == ’ ’ ) {
d e l a y ( b e a t s [ i ] * t e m p o ) ; // i n t e r v a l o
}
e l s e {
p l a y N o t e ( n o t e s [ i ] , b e a t s [ i ] * t e m p o ) ;
}
// p a u s a e n t r e as n o t a s
d e l a y ( t e m p o / 2) ;
}
}
PET - CoCE (UTFPR) Oficina de Programa¸c˜ao 20 de outubro de 2012 18 / 19
Se vocˆ e quiser, pode tentar fazer sua pr´ opria m´ usica!
Tabela : Notas.