sábado, 26 de maio de 2012

Códigos Fontes da Aula 10 (Expansor de Porta) do Curso Arduino

Pessoal,

Segue os códigos fontes utilizados na Aula 10 do Curso Arduino Advanced. E conforme prometido segue o código também do contador regressivo.


Código #1

#include

#define expansor1 0x38

void setup()
{
  Wire.begin();
  Wire.beginTransmission(expansor1);
  Wire.send(0xFF);
  Wire.endTransmission();
}

void loop()
{
  Wire.beginTransmission(expansor1);
  Wire.send(B10000001);
  Wire.endTransmission();
  delay(1000);
  Wire.beginTransmission(expansor1);
  Wire.send(B01111101);
  Wire.endTransmission();
  delay(1000);
}
 
Código #2
 
#include

#define expansor1 0x38
#define expansor2 0x39

void setup()
{
  Wire.begin();
  comunica(expansor1, 0xFF);
  comunica(expansor2, 0xFF);
}

void loop()
{
  comunica(expansor1, B10000001);
  comunica(expansor2, B01111101);
  delay(1000);
  comunica(expansor2, B10000001);
  comunica(expansor1, B01111101);
  delay(1000);
}

void comunica(byte endereco, byte digito)
{
  Wire.beginTransmission(endereco);
  Wire.send(digito);
  Wire.endTransmission();
}
 
Código Extra do Contador Regressivo
 
 #include

#define expansor1 0x38
#define expansor2 0x39

void setup()
{
  Wire.begin();
  EscreveDigito(expansor1, 0xFF);
  EscreveDigito(expansor2, 0xFE);
}

void loop()
{
  for(int i = 99; i >= 0; i--)
  {
    byte a = i / 10;
    byte b = i - (a * 10);
    if (i < 10) a = 0;
    EscreveDigito(expansor2, ConverteDigito(a));
    EscreveDigito(expansor1, ConverteDigito(b));
    delay(1000);
  }
}

byte ConverteDigito(byte decimal)
{
  switch(decimal)
  {
    case 0:
      return B00010001;
    case 1:
      return B01111101;
    case 2:
      return B00100011;
    case 3:
      return B00101001;
    case 4:
      return B01001101;
    case 5:
      return B10001001;
    case 6:
      return B10000001;
    case 7:
      return B00111101;
    case 8:
      return B00000001;
    case 9:
      return B00001001;
    default:
      return B11101111;
  }
}

void EscreveDigito(byte endereco, byte digito)
{
  Wire.beginTransmission(endereco);
  Wire.send(digito);
  Wire.endTransmission();
}
 
Abraços,
Renato Aloi
 

terça-feira, 22 de maio de 2012

Códigos do Material Adicional da Aula 8 (Ponte H)

Pessoal,

Segue abaixo os códigos do Material Adicional da Aula 8 (Ponte H) publicado no Youtube.

Código do Motor de Passo:

#include

const int stepsPerRevolution = 200;

Stepper myStepper(stepsPerRevolution, 8,9,10,11);           

void setup() {
  myStepper.setSpeed(60);
  Serial.begin(9600);
}

void loop() {
   Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);
 
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}
 


Código do Blink com dois motores:

void setup() {               
  pinMode(13, OUTPUT); 
  pinMode(12, OUTPUT);
  pinMode(10, OUTPUT); 
  pinMode(11, OUTPUT);
  digitalWrite(13, LOW); 
  digitalWrite(12, LOW);
  digitalWrite(10, LOW); 
  digitalWrite(11, LOW);
}

void loop() {
  digitalWrite(13, HIGH);
  digitalWrite(12, LOW);
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  delay(1000);             
  digitalWrite(13, LOW);   
  digitalWrite(12, HIGH);
  digitalWrite(10, LOW);  
  digitalWrite(11, HIGH);
  delay(1000);             
}

sábado, 5 de maio de 2012

Código Fonte Arduino para Ponte H via PWM

Pessoal,

Segue o código do exemplo de acionamento da Ponte H via PWM, conforme o vídeo abaixo:



int portaH1 = 9;
int portaH2 = 10;
int potpin = 0; 
int val;
int val1;
int val2;
 
void setup()
{
  Serial.begin(9600);
}
 
void loop()
{
  val = analogRead(potpin);           
 
  val1 = map(val, 0, 511, 255, 0);    
  val2 = map(val, 512, 1023, 0, 255);
 
  if (val > 511) val1 = 0;
  else val2 = 0;
 
  Serial.print("Val: ");
  Serial.print(val, DEC);
  Serial.print(" Val1: ");
  Serial.print(val1, DEC);
  Serial.print(" Val2: ");
  Serial.println(val2, DEC);
 
  analogWrite(portaH1, val1);
  analogWrite(portaH2, val2); 
}