Publicat la data

LED ON/OFF comandat la bătaie din palme „CLAPS” – pentru începători

LED ON/OFF comandat la bătaie din palme „CLAPS”

Puteți să aprindeți/stingeți lumina din camera la o bătaie din palme

Avem nevoie de :

Placă de dezvoltare UNO R3 (sau oricare)
Uno-roboromania-fata

Modulul senzor de detectare a sunetului

Modulul-senzor-detectare-sunet-roboromania
Ca LED îl vom folosi pe cel de la placa de dezvoltare : Led13 (sau oricare LED montat în "pin" cu o rezistentă în serie de 1k))

Codul : CLAPS
//-------------------------------
const int sound_pin = 2;
const int led_pin = 13;
const unsigned long min_time_distance_between_signals = 100UL;
const unsigned long max_time_distance_between_signals = 500UL;

const unsigned long delay_after_triggered = 2000UL;

bool led_state;
unsigned long last_time_since_clap;
unsigned long last_action_time;

void setup ()
{
 Serial.begin(9600); 
 pinMode (sound_pin, INPUT) ; 
 pinMode(led_pin, OUTPUT);
 digitalWrite(led_pin, LOW);

 led_state = false;
 last_action_time = 0;
 last_time_since_clap = 0;
}

void update_state(bool new_state, unsigned long current_time) {
 led_state = new_state;
 last_action_time = current_time;
 digitalWrite(led_pin, led_state ? HIGH : LOW);
 Serial.print("state = ");
 Serial.println(led_state);
}

void loop () {
 int sound_detected_state = digitalRead(sound_pin);

 unsigned long current_time = millis();
 unsigned long delta_time_since_last_action = current_time - last_action_time;

 if ((delta_time_since_last_action > delay_after_triggered) && ( sound_detected_state == HIGH )) {
 if (!led_state) {
 unsigned long current_delta_time_between_signals = current_time - last_time_since_clap;
 if (current_delta_time_between_signals > max_time_distance_between_signals) {
 last_time_since_clap = current_time;
 } else if (current_delta_time_between_signals > min_time_distance_between_signals) {
 update_state(true, current_time);
 }
 } else {
 update_state(false, current_time);
 }
 }
}
//-------------------------------

Succes !

Colectivul Roboromania

Publicat la data

Radio FM cu RDA5807 și Arduino, cu LCD Nokia

Radio FM cu RDA5807 și Arduino, cu LCD Nokia

Avem nevoie de :

Placă de dezvoltare UNO R3 (sau oricare)
Uno-roboromania-fata

Modul radio FM stereo RRD-102
fm-stereo-radio-rda5807m-module-roboromania-f

Display 48×84 pixels matrix LCD Nokia 3310/5110 la 3,3V
LCD-Nokia-3310-roboromaniaLCD-Nokia-5110-roboromania-fata

Schema de legături :

rddio-fm-lcd-roboromania

sau

rddio-fm-lcd2-roboromania
Atenție la pini.
Codul Arduino : (https://github.com/tehniq3/RDA5807)

sau alte sfaturi
Publicat la data

Robot 2WD Roboromania comandat Bluetooth și autonom ocolire obstacole

Robot 2WD Roboromania comandat Bluetooth și autonom ocolire obstacole

robot

Avem nevoie de :
o placă de dezvoltare tip Arduino UNO (sau oricare)
un modul Bluetooth HC-05 (sau HC-06)
un modul driver motoare L298N
un senzor cu ultrasunete
șasiu cu 2 motoare 2WD
cabluri Dupont

robot-2wd-bluetooth-roboromania

Cel mai simplu cod : (atenție când copiați codul ar putea sa apară unele erori de la fonturi)

//––––––––––––––

// Robot 2WD Roboromania comandat Bluetooth și autonom ocolire obstacole
// roboromania.ro

#include <NewPing.h>
#include <SoftwareSerial.h>

//L298n Motor Driver pins.

#define in1 2
#define in2 3
#define in3 4
#define in4 5

#define SPEED 255 // 160 – 255

SoftwareSerial sonar_serial(6, 7); // RX, TX

#define TRIGGER_PIN 9
#define ECHO_PIN 10
#define MAX_DISTANCE 200 // Maximum distanță măsurată.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
sonar_serial.begin(9600);
}

void loop() {
unsigned int uS = sonar.ping();
int val = uS / US_ROUNDTRIP_CM; // Convertor distanță în cm.
if ((val > 1) && (val < 20)) {
delay(100);
recover();
} else {
int command = sonar_serial.read();
if(command != -1) {
switch (command) {
case ‘F’: forward(); break;
case ‘B’: back(); break;
case ‘L’: left(); break;
case ‘R’: right(); break;
case ‘K’: stop(); break;
}
delay(10);
}
}
}

void recover() {
back();
delay(800);
left();
delay(500);
forward();
}

void forward() {
stop();
analogWrite(in1, SPEED);
analogWrite(in3, SPEED);
}

void back() {
stop();
analogWrite(in2, SPEED);
analogWrite(in4, SPEED);
}

void left() {
stop();
analogWrite(in3, SPEED);
analogWrite(in2, SPEED);
}

void right() {
stop();
analogWrite(in4, SPEED);
analogWrite(in1, SPEED);
}

void stop() {
analogWrite(in1, 0);
analogWrite(in2, 0);
analogWrite(in3, 0);
analogWrite(in4, 0);
}

//––––––––––––––

Atenție la declararea pinilor.

Colectivul magazinului roboromania.ro vă urează succes !  După realizare va rugam sa trimiteți poze și sugestii.

Creative Commons License
„Robot 2WD Roboromania comandat Bluetooth și autonom ocolire obstacole” de Popescu Viorel licențiat sub Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.