sábado, 13 de mayo de 2017

Preparando práctica 9: Mapeando el Joystick

int sensorValue=0;
void setup()
{
Serial.begin(9600);
pinMode(A1, INPUT);
}
void loop()
{
sensorValue = analogRead(1);
sensorValue = map(sensorValue, 0, 1024, -10, 11); //pasamos la señal del sensor al rango [-10, +10]
Serial.println(sensorValue);
delay(100);
}

viernes, 12 de mayo de 2017

Práctica 9: Girando el motor paso a paso

int motorPin1 = 11;  //pin11----1N1
int motorPin2 = 10;  //pin10----1N2
int motorPin3 = 9;   //pin9----1N3
int motorPin4 = 8;   //pin8----1N4
void gira_antihorario(int delayTime) //secuencia de 4 pasos
{                                    //se excitan las bobinas a pares
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);           
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime); 
}

void gira_horario(int delayTime)
{
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
}
void setup()
{
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop()
{
for(int i=0; i<512; i++)  gira_horario(2);
delay(2000);
for(int i=0; i<512; i++)  gira_antihorario(2);
delay(2000);
}

Práctica 10: Acelerómetro

#include <Wire.h>

#define MPU 0x68
#define A_R 16384.0
#define G_R 131.0
#define RAD_A_DEG = 57.295779

int16_t AcX, AcY, AcZ, GyX, GyY, GyZ;

//Angulos
float Acc[2];

void setup()
{
Serial.begin(9600);
Wire.begin();
Wire.beginTransmission(MPU);
Wire.write(0x6B);
Wire.write(0);
Wire.endTransmission(true);
}
void loop()
{
   Wire.beginTransmission(MPU);
   Wire.write(0x3B);                       //Pedir el registro 0x3B - corresponde al AcX
   Wire.endTransmission(false);
   Wire.requestFrom(MPU,6,true);    //A partir del 0x3B, se piden 6 registros
   AcX=Wire.read()<<8|Wire.read(); //Cada valor ocupa 2 registros
   AcY=Wire.read()<<8|Wire.read();
   AcZ=Wire.read()<<8|Wire.read();

    //A partir de los valores del acelerometro, se calculan los angulos Y, X
    //respectivamente, con la formula de la tangente.
   Acc[1] = atan(-1*(AcX/A_R)/sqrt(pow((AcY/A_R),2) + pow((AcZ/A_R),2)))*RAD_TO_DEG;
   Acc[0] = atan((AcY/A_R)/sqrt(pow((AcX/A_R),2) + pow((AcZ/A_R),2)))*RAD_TO_DEG;
 
  Serial.print(Acc[0]);
  Serial.print(",");
  Serial.println(Acc[1]);
   delay(10);
}

Ampliando práctica 10: Incluyendo un microservo

#include <Servo.h>

Servo miservo;
int grados;

void setup()
{
miservo.attach(6); //cable amarillo del servo al pin 6
}

void loop()
{
grados=grados+10;
if (grados>=180) grados=0;

miservo.write(grados);
delay(1000);

}

miércoles, 3 de mayo de 2017

Práctica 4: Mapeo de sensores

byte valorsensor;

void setup()
{
Serial.begin(9600);
}

void loop()
{
valorsensor=analogRead(A1);
Serial.println(valorsensor);
delay(100);
}