Please enable JavaScript to view the comments powered by Disqus.

Program-ME: O Arduino turbinado da Globalcode!

Program-ME é uma placa controladora compatível com Arduino e programável através de uma simplificação da linguagem C. A transferência do programa é feita por USB com uma interface amigável que funciona em diferentes sistemas operacionais.

Program-me o Arduino da Globalcode1

Arduino com mais de 12 funções:

Características técnicas:

Compre já

Temos dois formatos de placas: quadrada e redonda. Os componentes são exatamente os mesmos em ambas e recomendamos a redonda para robôs e quadrada para projetos estacionados.


Placa quadrada preta: R$

Placa redonda preta: R$

Mapa de Portas Program-ME v2.0


Clique aqui para download de uma versão para impressão

Defines para Arduino

  1. #define SPEAKER 4 //em paralelo com led
  2. #define LED_P5 4 //em paralelo com speaker
  3. #define LED_P4 7
  4. #define LED_P3 8
  5. #define LED_P2 12
  6. #define LED_P1 13
  7. #define CHAVE_1 2
  8. #define TRANSISTOR_Q5 9
  9. #define TRANSISTOR_Q4 6 //servo
  10. #define TRANSISTOR_Q2 5 //servo
  11. #define TRANSISTOR_Q3 3
  12. //Analogicas
  13. #define SENSOR_TEMPERATURA 2
  14. #define SENSOR_LUZ 3
  15. #define ENTRADA_1 0
  16. #define ENTRADA_2 1
  17. //Entradas para interrupcao
  18. #define INT_1 3
  19. #define INT_0 2
  20. #define SERVO_1 5
  21. #define SERVO_2 6
  22. //Ponte H
  23. #define MOTOR1_A 7 //led paralelo
  24. #define MOTOR1_B 8 //led paralelo
  25. #define MOTOR1_PWM 10 //led paralelo
  26. #define MOTOR2_A 12 //led paralelo
  27. #define MOTOR2_B 13 //led paralelo
  28. #define MOTOR2_PWM 11 //led paralelo
"/>

Downloads

Sensores

O Program-ME já vem com sensor de luz e temperatura que são de extrema utilidade e diversos tipos de projetos.

Controle de Motor

Você pode controlar qualquer tipo de motor com o Program-ME, pois ele já possui 4 transistores e uma ponte H para isso.

Exemplos de componentes que podem ser acoplados ao Program-me:

Exemplos de Código Program-ME v2.0

Pisca Led

arduino code

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
/* Exemplo código Arduino*/
// Piscando Led

int ledPin = 13;               //Led da porta digital 13 do program-me
void setup()
{
  pinMode(ledPin, OUTPUT);      // configura porta do led para escrita / saída
}

void loop()
{
  digitalWrite(ledPin, HIGH);   // liga o LED
  delay(1000);                  // espera um segundo
  digitalWrite(ledPin, LOW);    // desliga o LED
  delay(1000);                  // espera um segundo
}

Pisca Leds

arduino code

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
int leds[] = {
  13, 12, 8, 7, 4};

void setup() {
  Serial.begin(9600);
  for(int x=0;x<5;x++) {
    pinMode(leds[x], OUTPUT);
  }
}

void loop() {
  for(int x=0;x<=4;x++) {
    digitalWrite(leds[x], HIGH);
    delay(100);
    digitalWrite(leds[x], LOW);
    delay(100);
  }
}

Pisca Leds conforme luminosidade ambiente

arduino code

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int leds[] = {
  13, 12, 8, 7, 4};

void setup() {
  Serial.begin(9600);
  for(int x=0;x<5;x++) {
    pinMode(leds[x], OUTPUT);
  }
}


void loop() {

  Serial.println("Sensor: ");
  Serial.println(analogRead(SENSOR_LUZ));
  int numeroLedsALigar = map(analogRead(SENSOR_LUZ), 300, 900, 0, 4);
  Serial.println(numeroLedsALigar);
  for(int x=0;x<=numeroLedsALigar;x++) {
    digitalWrite(leds[x], HIGH);
    delay(100);
  }
  for(int x=numeroLedsALigar;x>-1;x--) {
    digitalWrite(leds[x], LOW);
    delay(100);
  }
}

Utilizando 2 Motores com Ponte H

arduino code

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include <Servo.h>

#define SPEAKER 4 //em paralelo com led
#define LED_P5 4 //em paralelo com speaker
#define LED_P4 7
#define LED_P3 8
#define LED_P2 12
#define LED_P1 13

#define CHAVE_1 2

#define TRANSISTOR_Q5 9
#define TRANSISTOR_Q4 6 //servo
#define TRANSISTOR_Q2 5 //servo
#define TRANSISTOR_Q3 3

//Analogicas
#define SENSOR_TEMPERATURA 2
#define SENSOR_LUZ 3
#define ENTRADA_1 0
#define ENTRADA_2 1

//Entradas para interrupcao
#define INT_1 3
#define INT_0 2

#define SERVO_1 5
#define SERVO_2 6

//Ponte H
#define MOTOR1_A 7 //led paralelo
#define MOTOR1_B 8 //led paralelo
#define MOTOR1_PWM 10 //led paralelo

#define MOTOR2_A 12 //led paralelo
#define MOTOR2_B 13 //led paralelo
#define MOTOR2_PWM 11 //led paralelo

Servo servoV;
Servo servoH;

void setup(){
  setupMotor();
  servoH.attach(5);
  servoV.attach(6);

}

void loop() {
  andarFrente(1000,4);
  parar();
  andarTraz(1000,4);
  parar();
  girarNoEixo(1000,4,0);
  parar();
  girarNoEixo(1000,4,1);
  parar();
  return;
}

int sentido=0;

void setupMotor() {
  pinMode(MOTOR1_A, OUTPUT);
  pinMode(MOTOR1_B, OUTPUT);
  pinMode(MOTOR2_A, OUTPUT);
  pinMode(MOTOR2_B, OUTPUT);
}


void girarNoEixo(int tempo, int intensidade, int sentido1) {
  analogWrite(MOTOR1_PWM,intensidade*50);
  analogWrite(MOTOR2_PWM,intensidade*50);
  digitalWrite(MOTOR1_A,sentido1);
  digitalWrite(MOTOR1_B,!sentido1);
  digitalWrite(MOTOR2_A,!sentido1);
  digitalWrite(MOTOR2_B,sentido1);
  delay(tempo);
}


void parar() {
  analogWrite(MOTOR1_PWM,0 );
  analogWrite(MOTOR2_PWM,0);
  digitalWrite(MOTOR1_A,0);
  digitalWrite(MOTOR1_B,0);
  digitalWrite(MOTOR2_A,0);
  digitalWrite(MOTOR2_B,0);

}
void andarFrente(int tempo, int intensidade) {
  sentido = 0;
  analogWrite(MOTOR1_PWM,intensidade*50);
  analogWrite(MOTOR2_PWM,intensidade*50);
  digitalWrite(MOTOR1_A,sentido);
  digitalWrite(MOTOR1_B,!sentido);
  digitalWrite(MOTOR2_A,sentido);
  digitalWrite(MOTOR2_B,!sentido);
  delay(tempo);
}
void andarTraz(int tempo,int intensidade) {
  sentido = 1;
  analogWrite(MOTOR1_PWM,intensidade*50 );
  analogWrite(MOTOR2_PWM,intensidade*50);
  digitalWrite(MOTOR1_A,sentido);
  digitalWrite(MOTOR1_B,!sentido);
  digitalWrite(MOTOR2_A,sentido);
  digitalWrite(MOTOR2_B,!sentido);
  delay(tempo);

}
void virarEsquerda(int tempo,int intensidade) {
  analogWrite(MOTOR1_PWM,intensidade*50 );
  analogWrite(MOTOR2_PWM,10*intensidade);
  digitalWrite(MOTOR1_A,sentido);
  digitalWrite(MOTOR1_B,!sentido);
  digitalWrite(MOTOR2_A,sentido);
  digitalWrite(MOTOR2_B,!sentido);
  delay(tempo);

}
void virarDireita(int tempo,int intensidade) {
  analogWrite(MOTOR1_PWM,10*intensidade );
  analogWrite(MOTOR2_PWM,intensidade*50);
  digitalWrite(MOTOR1_A,sentido);
  digitalWrite(MOTOR1_B,!sentido);
  digitalWrite(MOTOR2_A,sentido);
  digitalWrite(MOTOR2_B,!sentido);
  delay(tempo);
}

void virarEsquerdaRe(int tempo,int intensidade) {
  analogWrite(MOTOR1_PWM,intensidade*50 );
  analogWrite(MOTOR2_PWM,10*intensidade);
  digitalWrite(MOTOR1_A,!sentido);
  digitalWrite(MOTOR1_B,sentido);
  digitalWrite(MOTOR2_A,!sentido);
  digitalWrite(MOTOR2_B,sentido);
  delay(tempo);

}
void virarDireitaRe(int tempo,int intensidade) {
  analogWrite(MOTOR1_PWM,10*intensidade );
  analogWrite(MOTOR2_PWM,intensidade*50);
  digitalWrite(MOTOR1_A,!sentido);
  digitalWrite(MOTOR1_B,sentido);
  digitalWrite(MOTOR2_A,!sentido);
  digitalWrite(MOTOR2_B,sentido);
  delay(tempo);
}

O Padrão Arduíno

Arduino foi criado na Itália por Máximo Banzi com o objetivo de fomentar a computação física, cujo conceito é aumentar as formas de interação física entre nós e os computadores. Por se tratar de uma plataforma com especificações livres de patentes e softwares open-source, temos vários fabricantes independentes de ARduino ao redor do mundo, incluindo o Brasil que fabrica as versãotilde;es Severino, Tatuino, Modelixino e agora o Program-ME da Globalcode.

Na prática utilizamos portas digitais e analógicas para ligar componentes eletronicos (ex. leds, sensores, motores) e programar via software seu comportamento.

Nas portas digitais podemos ler ou gravar 0/1 ou HIGH/LOW. Um led ligado em uma porta digital em estado HIGH é um led ligado. Já as portas analógicas transmitem os dados em onda senoidal, que por fim são convertidos para números entre 0 e 1023. Potenciômetro e sensor de luz são exemplos de componentes que devem ser ligados nas portas analógicas.

O Arduino disponibiliza também portas digitais PWM que permitem um tipo de controle de potência em portas digitais. Usamos PWM para por exemplo controlar a velocidade de rotação de um motor.

Alguns tipos de Arduíno:

Existem também diferentes tipos de Arduino além do convencional para atender a projetos mais específicos: