Diferencia entre revisiones de «Sensor de proximidad infrarrojo»
Sin resumen de edición |
Sin resumen de edición |
||
| (No se muestra una edición intermedia de otro usuario) | |||
| Línea 442: | Línea 442: | ||
analogWrite(10, difference); | analogWrite(10, difference); | ||
//analogWrite(11, difference); | //analogWrite(11, difference); | ||
if (myDFPlayer.available()) { | |||
printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states. | |||
} | |||
} | |||
int leerSensor(int pinLed, int pinSensor) | |||
{ | |||
digitalWrite(pinLed, HIGH); | |||
delay(1); | |||
int max_enc = 0; | |||
for (int i = 0; i < 100; i++) { | |||
int v = analogRead(pinSensor); | |||
if (v > max_enc) max_enc = v; | |||
} | |||
digitalWrite(pinLed, LOW); | |||
delay(1); | |||
int max_apa = 0; | |||
for (int i = 0; i < 100; i++) { | |||
int v = analogRead(pinSensor); | |||
if (v > max_apa) max_apa = v; | |||
} | |||
int difference = max_apa - max_enc; | |||
return difference; | |||
} | |||
void printDetail(uint8_t type, int value){ | |||
switch (type) { | |||
case TimeOut: | |||
Serial.println(F("Time Out!")); | |||
break; | |||
case WrongStack: | |||
Serial.println(F("Stack Wrong!")); | |||
break; | |||
case DFPlayerCardInserted: | |||
Serial.println(F("Card Inserted!")); | |||
break; | |||
case DFPlayerCardRemoved: | |||
Serial.println(F("Card Removed!")); | |||
break; | |||
case DFPlayerCardOnline: | |||
Serial.println(F("Card Online!")); | |||
break; | |||
case DFPlayerUSBInserted: | |||
Serial.println("USB Inserted!"); | |||
break; | |||
case DFPlayerUSBRemoved: | |||
Serial.println("USB Removed!"); | |||
break; | |||
case DFPlayerPlayFinished: | |||
Serial.print(F("Number:")); | |||
Serial.print(value); | |||
Serial.println(F(" Play Finished!")); | |||
//myDFPlayer.next(); | |||
break; | |||
case DFPlayerError: | |||
Serial.print(F("DFPlayerError:")); | |||
switch (value) { | |||
case Busy: | |||
Serial.println(F("Card not found")); | |||
break; | |||
case Sleeping: | |||
Serial.println(F("Sleeping")); | |||
break; | |||
case SerialWrongStack: | |||
Serial.println(F("Get Wrong Stack")); | |||
break; | |||
case CheckSumNotMatch: | |||
Serial.println(F("Check Sum Not Match")); | |||
break; | |||
case FileIndexOut: | |||
Serial.println(F("File Index Out of Bound")); | |||
break; | |||
case FileMismatch: | |||
Serial.println(F("Cannot Find File")); | |||
break; | |||
case Advertise: | |||
Serial.println(F("In Advertise")); | |||
break; | |||
default: | |||
break; | |||
} | |||
break; | |||
default: | |||
break; | |||
} | |||
} | |||
</syntaxhighlight> | |||
* Avances Código | |||
<syntaxhighlight lang="c++" line copy> | |||
/*************************************************** | |||
DFPlayer - A Mini MP3 Player For Arduino | |||
<https://www.dfrobot.com/product-1121.html> | |||
*************************************************** | |||
This example shows the basic function of library for DFPlayer. | |||
Created 2016-12-07 | |||
By [Angelo qiao](Angelo.qiao@dfrobot.com) | |||
GNU Lesser General Public License. | |||
See <http://www.gnu.org/licenses/> for details. | |||
All above must be included in any redistribution | |||
****************************************************/ | |||
/***********Notice and Trouble shooting*************** | |||
1.Connection and Diagram can be found here | |||
<https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299#Connection_Diagram> | |||
2.This code is tested on Arduino Uno, Leonardo, Mega boards. | |||
****************************************************/ | |||
#include "Arduino.h" | |||
#include "DFRobotDFPlayerMini.h" | |||
#include <SoftwareSerial.h> | |||
SoftwareSerial softSerial(/*rx =*/4, /*tx =*/5); | |||
#define FPSerial softSerial | |||
DFRobotDFPlayerMini myDFPlayer; | |||
void printDetail(uint8_t type, int value); | |||
int baselineVolume = 20; | |||
void setup(){ | |||
// sensor1 | |||
//pinMode(A0, INPUT_PULLUP); | |||
//pinMode(8, OUTPUT); | |||
// sensor2 | |||
pinMode(A1, INPUT_PULLUP); | |||
pinMode(7, OUTPUT); | |||
// salida filtro -> vca2 | |||
pinMode (10, OUTPUT); | |||
// salida filtro -> vca1 | |||
//pinMode (11, OUTPUT); | |||
Serial.begin(9600); | |||
FPSerial.begin(9600); | |||
Serial.println(); | |||
Serial.println(F("DFRobot DFPlayer Mini Demo")); | |||
Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)")); | |||
while (!myDFPlayer.begin(FPSerial, /*isACK = */true, /*doReset = */true)) { //Use serial to communicate with mp3. | |||
Serial.println(F("Unable to begin:")); | |||
Serial.println(F("1.Please recheck the connection!")); | |||
Serial.println(F("2.Please insert the SD card!")); | |||
delay(500); | |||
} | |||
Serial.println(F("DFPlayer Mini online.")); | |||
myDFPlayer.volume(20); //Set volume value. From 0 to 30 | |||
myDFPlayer.play(4); //Play the first mp3 | |||
myDFPlayer.enableLoop(); | |||
int val = 0; | |||
analogWrite(10, val); | |||
//analogWrite(11, val); | |||
} | |||
void loop() { | |||
int difference; | |||
//difference = leerSensor(8, A0); | |||
difference = leerSensor(7, A1); | |||
delay(50); | |||
// bajar señal minima del sensor | |||
difference = difference -5; | |||
//entre 0 y 255, ni mas ni menos | |||
if (difference < 0) difference = 0; | |||
if (difference > 255) difference = 255; | |||
analogWrite(10, difference); | |||
//analogWrite(11, difference); | |||
Serial.println("0 300 " + String(difference) + " " + myDFPlayer.readVolume()); | |||
if (myDFPlayer.available()) { | if (myDFPlayer.available()) { | ||
| Línea 540: | Línea 733: | ||
= Circuitos = | = Circuitos = | ||
<gallery> | <gallery> | ||
Esquematico-vca.jpg | VCA usando un LDR | |||
</gallery> | </gallery> | ||