Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ejemplos Arduino #7

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions Examples/Arduino/PWM/PWM.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
//
// Ejemplo deescritura analogica PWM para las Bast Pro Mini M0 de electroniccats
//
// Pines habilitados para PWM - Pin digital 1, 13.
// - Pin analogico A1
//
//|12
// Pin control de voltaje mediante DAC - Pin analogico A0


// Enciende un led por PWM de o a 255 con un delay de 100ms entre cada aumento de uno en uno, al llegar a 255, espera 500ms e inicia el decremento a 0.

int pwm_led = A1;

int pwm = 0;

void setup() {
// put your setup code here, to run once:
pinMode(pwm_led,OUTPUT);

Serial.begin(9600);

}

void loop() {
// put your main code here, to run repeatedly:

analogWrite(pwm_led,pwm);
delay(100);

if(pwm >= 255)
{

pwm = 0;

delay(500);

for(int i = 255; i>0; i--)
{
analogWrite(pwm_led,i);
delay(100);
}

}
else
{

pwm++;

}

}
30 changes: 30 additions & 0 deletions Examples/Arduino/blink/blink.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
//
// Ejemplo Blink para la tarjeta Bast Pro mini M0 de Electroniccats
//
// Led integrado en la tarjeta - Pin digital 24
//


int led_pin = 24;

int t_delay = 100;


void setup() {
// put your setup code here, to run once:

pinMode(led_pin,OUTPUT);

Serial.begin(9600);

}

void loop() {
// put your main code here, to run repeatedly:
Serial.print(led_pin);
digitalWrite(led_pin,HIGH);
delay(t_delay);
digitalWrite(led_pin,LOW);
delay(t_delay);

}
198 changes: 198 additions & 0 deletions Examples/Arduino/line_follower/line_follower.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
int sensorValue,u,pwmi,pwmd;
float prom,pos,sensor,snum,posa,p,pa,d;

//ganancias modificables*********************
float kd=25,kp=35;

void setup() {

pinMode(12,OUTPUT);//s0
pinMode(11,OUTPUT);//s1 regleta de sensores
pinMode(10,OUTPUT);//s2
pinMode(13,OUTPUT);//s3

pinMode(3,OUTPUT);//PWMA
pinMode(4,OUTPUT);//AIN1 motor derecho
pinMode(5,OUTPUT);//AIN2

pinMode(7,OUTPUT);//BIN2
pinMode(8,OUTPUT);//BIN1 motor izquierdo
pinMode(9,OUTPUT);//PWMB

//umbral modificable**********************
prom=600;

}
void loop() {

//velocidad modificable*********************
pwmi=250;
pwmd=250;


sensor=0;
snum=0;
digitalWrite(12,LOW);digitalWrite(11,LOW);digitalWrite(10,LOW);digitalWrite(13,LOW);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor-=8;
snum++;
}
digitalWrite(12,HIGH);digitalWrite(11,LOW);digitalWrite(10,LOW);digitalWrite(13,LOW);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor-=7;
snum++;
}
digitalWrite(12,LOW);digitalWrite(11,HIGH);digitalWrite(10,LOW);digitalWrite(13,LOW);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor-=6;
snum++;
}
digitalWrite(12,HIGH);digitalWrite(11,HIGH);digitalWrite(10,LOW);digitalWrite(13,LOW);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor-=5;
snum++;
}
digitalWrite(12,LOW);digitalWrite(11,LOW);digitalWrite(10,HIGH);digitalWrite(13,LOW);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor-=4;
snum++;
}
digitalWrite(12,HIGH);digitalWrite(11,LOW);digitalWrite(10,HIGH);digitalWrite(13,LOW);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor-=3;
snum++;
}
digitalWrite(12,LOW);digitalWrite(11,HIGH);digitalWrite(10,HIGH);digitalWrite(13,LOW);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor-=2;
snum++;
}
digitalWrite(12,HIGH);digitalWrite(11,HIGH);digitalWrite(10,HIGH);digitalWrite(13,LOW);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor-=1;
snum++;
}
digitalWrite(12,LOW);digitalWrite(11,LOW);digitalWrite(10,LOW);digitalWrite(13,HIGH);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor+=1;
snum++;
}
digitalWrite(12,HIGH);digitalWrite(11,LOW);digitalWrite(10,LOW);digitalWrite(13,HIGH);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor+=2;
snum++;
}
digitalWrite(12,LOW);digitalWrite(11,HIGH);digitalWrite(10,LOW);digitalWrite(13,HIGH);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor+=3;
snum++;
}
digitalWrite(12,HIGH);digitalWrite(11,HIGH);digitalWrite(10,LOW);digitalWrite(13,HIGH);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor+=4;
snum++;
}
digitalWrite(12,LOW);digitalWrite(11,LOW);digitalWrite(10,HIGH);digitalWrite(13,HIGH);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor+=5;
snum++;
}
digitalWrite(12,HIGH);digitalWrite(11,LOW);digitalWrite(10,HIGH);digitalWrite(13,HIGH);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor+=6;
snum++;
}
digitalWrite(12,LOW);digitalWrite(11,HIGH);digitalWrite(10,HIGH);digitalWrite(13,HIGH);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor+=7;
snum++;
}
digitalWrite(12,HIGH);digitalWrite(11,HIGH);digitalWrite(10,HIGH);digitalWrite(13,HIGH);
sensorValue = analogRead(A6);
if(sensorValue>prom){
sensor+=8;
snum++;
}
if(snum>0){
pos=sensor/snum;
}
else{
if(posa>0){
pos=9;
}
if(posa<0){
pos=-9;
}
}



posa=pos;

p=kp*pos;
d=kd*(p-pa);
u=p+d;


pa=p;



pwmi+=u;
pwmd-=u;



if(pwmi>255){
pwmi=255;
}
if(pwmi<-255){
pwmi=-255;
}
if(pwmd>255){
pwmd=255;
}
if(pwmd<-255){
pwmd=-255;
}

if(pwmd>=0){
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
}
if(pwmd<0){
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
}
if(pwmi>=0){
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
}
if(pwmi<0){
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
}
if(analogRead(A7)>500){
analogWrite(3,(abs(pwmi)));
analogWrite(9,(abs(pwmd)));
}
else{
analogWrite(3,0);
analogWrite(9,0);
}
}
70 changes: 70 additions & 0 deletions Examples/Arduino/mux_analog/mux_analog.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@

int n_sensores = 16;

int s[] = {A0,A1,A2,A3}; //pines de selecciòn para el multiplexor

int sen[] = {A4, A5}; // pines de lectura analogica para los dos multiplexores


//Variables de lectura
int lec[16][2]; //almacenamiento del multiplexor 1


int comb[16][4] = { //Matrix de 16x4

{0,0,0,0}, //0
{0,0,0,1}, //1
{0,0,1,0}, //2
{0,0,1,1}, //3
{0,1,0,0}, //4
{0,1,0,1}, //5
{0,1,1,0}, //6
{0,1,1,1}, //7
{1,0,0,0}, //8
{1,0,0,1}, //9
{1,0,1,0}, //10
{1,0,1,1}, //11
{1,1,0,0}, //12
{1,1,0,1}, //13
{1,1,1,0}, //14
{1,1,1,1}, //15

};


void setup() {
// put your setup code here, to run once:

for (int i = 0; i<= 3; i++)
{
pinMode(s[i],OUTPUT);
}

Serial.begin(9600);

}

void loop() {
// put your main code here, to run repeatedly:
Serial.println(" ");

for (int j = 0; j<= n_sensores-1 ; j++)
{
digitalWrite(s[0],comb[j][0]);
digitalWrite(s[1],comb[j][1]);
digitalWrite(s[2],comb[j][2]);
digitalWrite(s[3],comb[j][3]);

lec[j][0] = analogRead(sen[0]);
lec[j][1] = analogRead(sen[1]);

Serial.print(" s");
Serial.print(j);
Serial.print(" = ");
Serial.print(lec[j][0]);

delay(100);
}


}