Arduino - Proyecto Escolar

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 39 puestos en Arduino (en relación al último mes)
Gráfica de Arduino

Proyecto Escolar

Publicado por Carlos (1 intervención) el 11/03/2019 02:50:01
Buenas hace poco en la universidad se nos encargo un proyecto de un carrito de gravedad.
Pero dentro de ese proyecto venia un ensayo de sensores y actuadores en el carrito. Para lo que me di la tarea de hacer un proyecto con 2 sensores ultrasonicos, 2 pantalals lcd, un buzzer.
El programa no esta acabado y la verdad no se si esta correcto. Me gustaria saber si alguien por medio de un mensaje me podria orientar a saber si el trabajo que realize esta correcto o esta destinado a un rotundo fracaso.
No soy un experto en la programación, lo que hice fue conforme a ejemplos y a lo que llegaba a entender.
A continuacion dejo el codigo que realize para que lo vean.
Salu2 :)

1
2
3
4
5
6
7
8
9
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
/*Programa para Proyecto GRC 3.0 
  Semetre Enero-Junio 2019
  Alumnos 7-8 Semestre IA
  Facultad de Sistemas
*/
#include <LiquidCrystal.h>
#include "SR04.h"
#include <Wire.h>
//#include <DS3231.h>
//Declaracion de variables a utilizar en el programa
//2 Sensores Opticos (PIN 22,2; 23,3; LedIz 26; LedDe 25; Variables tiempo, distancia, tiempito, tiempo, distancia, distancia;
//Pin intemitente 33; direciz 34; direcde 35, freno 36; Optico 37; 
const int pinEcho1=22;          //Sensor UltraSonico Izquierdo Signal     Este Sensor detercara 
const int pinTrigger1=2;        //Sensor UltraSonico Izquierdo Receptor    un objeto a 20cm en el
const int pinledIz=26;          //Led amarillo de proximidad IZQUIERDO     punto ciego
const int pinEcho2=23;          //Sensor UltraSonico Derecho Signal       Este Sensor detercara
const int pinTrigger2=3;        //Sensor UltraSonico Derecho Receptor      un objeto a 20cm en el
const int pinledDe=25;          //Led amarillo de proximidad Derecho       punto ciego
int tiempo;
int distancia;
int tiempito;
int distancia2;
//bool val;
const int pinintermitente=33;  //Aquí se declara el pin a utilizar para las intermitentes.
const int pindireciz=34;       //Aquí se declara el pin a utilizar para el direc. izquierdo
const int pindirecde=35;       //Aquí se declara el pin a utilizar para el direc. derecho
const int pinfreno=36;         //Aquí se declara el pin a utilizar para el freno (Queda pendiente a utilizar)
const int pinoptico=37;        //Aqui se delcara el pin a utilizar para el sensor optico para el cronometro fisico
int milisegundos=0;
int decimas=0;
int segundos=0;
int minutos=0;
int horas=0;
 
/*
La parte superior se encarga de los puntos Zi3goz para el piloto
 */
 LiquidCrystal lcd1(27, 28, 2, 3, 4, 29);     //Pantalla LCD Izquierda, responsable de Punto Ciego
 LiquidCrystal lcd2(32, 33, 5, 6, 7, 34);     //Pantalla LCD Derecha, responsable de cronometro
int buzzer=30;                                //Buzzer de aviso para punto ciego
 
void setup()
{
  Serial.begin(9600);
  pinMode(pinEcho1,INPUT);
  pinMode(pinTrigger1,OUTPUT);
  pinMode(25,OUTPUT);
  pinMode(30,OUTPUT);
  int tiempo;
 
  Serial.begin(9600);
  pinMode(pinEcho2,INPUT);
  pinMode(pinTrigger2,OUTPUT);
  pinMode(26,OUTPUT);
  pinMode(37,INPUT);
  int tiempito;
 
  lcd1.begin(16, 2);
  lcd1.print("OBJETO @ ");
}
void loop()
{
  digitalWrite(pinTrigger1, LOW);//Envio de disparo
  delayMicroseconds(2);
  digitalWrite(pinTrigger1, HIGH);//Puso <10 seg en estado ALTO
  delayMicroseconds(10);
  digitalWrite(pinTrigger1, LOW);
/*  En esta etapa se calcula la velocidad del sonido que es 
    26us/cm, se divide el tiempo entre 58 dado que es el tiempo
    que tarda en¿l ciclo ida/vuelta en un cm la onda*/
  tiempo=pulseIn(pinEcho1,HIGH);
  distancia=tiempo/58;
//Hasta aqui realiza el calculo de onda las siguietes 3 lineas determinan calculos a "cm" para cuestiones practicas
   Serial.print(distancia);
   Serial.println(" cm");
   delay(200);
/*En las siguientes 12 lineas se determina que si la discancia Izquieda es menor a 20cm se ensendera la  
  saliuda 26 (LED Izquierdo) para aviso visual de objeto proximo y ensendera y apagara durante un tiempo de 
  de 300us.
 */
   if (distancia <= 20)
   {
    digitalWrite(26, HIGH);
    delay(300);
    digitalWrite(30,HIGH);
    delay(300);
   }
   /*
    * Caso contrario a lo anterior el LED estara apagado, lo que significa que se detecta objeto a 21 cm o mas
    */
    else
    {
      digitalWrite(26, LOW);
    }
  {
    /*
     * En las siguietnes 7 lineas de codigo se da la orden al primer sensor ultrasonico que envie la señal del emisor y el receptor
     * la velocidad de disparo dsera de 2 microsegundos, y el receptor respondera a 10.
     */
  digitalWrite(pinTrigger2, LOW);//Envio de disparo
  delayMicroseconds(2);
  digitalWrite(pinTrigger2, HIGH);//Puso <10 seg en estado ALTO
  delayMicroseconds(10);
  digitalWrite(pinTrigger2, LOW);
   tiempito=pulseIn(pinEcho1,HIGH);
  distancia2=tiempito/58;
/* 
 *  Este codigo es identico al anterior lo que cambia es el nombre de la variable a doc a el ultrasonico derecho 
 */
   Serial.print(distancia2);
   Serial.println(" cm");
   delay(200);
   if (distancia2 <= 20)
   {
    digitalWrite(25, HIGH);
    delay(300);
    digitalWrite(30,HIGH);
    delay(1000);
   }
  else
    {
    digitalWrite(25, LOW);
    }
  }
  //Void loop para pantalla LCD, en el siguietne if se declara cuando se presentara la informacion de cuando tenemos un
  //objeto a Izquierda o Derecha
  {
  lcd1.setCursor(0, 0);
    if(distancia<=20&&distancia2>=21)
    {
      lcd1.print("objeto Izquierda");
      lcd1.setCursor(6, 0);
      lcd1.print(distancia);
      delay(500);
    }
  else
    if(distancia2<=20&&distancia>=21);
      {
      lcd1.print("objeto Derecha");
      lcd1.setCursor(6, 0);
      lcd1.print(distancia);
      delay(500);
      }
    }
    /*
     * En esta parte del codigo se define el uso del sensor optico, el cual esta calibrado a funcionar a 23cm y activara el disparo del 
     * cronometro
     */
    {
      bool val=digitalRead(pinoptico);
        if(val==HIGH)
      {
      //inicia cronometro
      horas = 0;
      minutos = 0;
      segundos = 0;
      decimas = 0;
      lcd2.clear();
      }
      if(digitalRead(val) == HIGH)
      {
      delay(200);
      while(digitalRead(val) == LOW);
      delay(200);
      }
      milisegundos = millis();
      if(milisegundos % 100 == 0)
      {
      decimas++;
      if(decimas == 10)
      { //When it has passed 10 tenths of a second it count one second
      decimas = 0;
      segundos++;
      }
      if(segundos == 60)
      { //When it has passed 60 seconds it count one minute
      segundos = 0;
      minutos++;
     }
    if(minutos == 60){ //When it has passed 60 minutes it count one hour
      minutos = 0;
      horas++;
    }
    //Parte poco probable de usarse ya que las carreras son de menos de 5 min
    //Solo se puso para completar el reloj.
    lcd2.setCursor(0,0);
    if(horas < 10)
    {
      lcd2.print("0");
    }
    lcd2.print(horas);
    lcd2.print(":");
    lcd2.setCursor(3,0);
    if(minutos < 10){
      lcd2.print("0");
    }
    lcd2.print(minutos);
    lcd2.print(":");
    lcd2.setCursor(6,0);
    if(segundos < 10){
      lcd2.print("0");
    }
    lcd2.print(segundos);
    lcd2.print(":");
    lcd2.setCursor(9,0);
    lcd2.print(decimas);
  }
        else
        {
        //apaga cronometro
 
        }
    }
//    if(digitalWrite(pinfreno=HIGH)
 
  }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder