Arduino + 2 dc motors + servo

/*************************************************************
Motor Shield 2-Channel DC Motor Demo
by Randy Sarafan

For more information see:
http://www.instructables.com/id/Arduino-Motor-Shield-Tutorial/

*************************************************************/

int joy1 = 3;
int joy2 = 4;
int val1 = 0;
int val2 = 0;
int val_final = 0;

void setup() {

Serial.begin(9600);

//Setup Channel A
pinMode(12, OUTPUT); //Initiates Motor Channel A pin
pinMode(9, OUTPUT); //Initiates Brake Channel A pin

//Setup Channel B
pinMode(13, OUTPUT); //Initiates Motor Channel A pin
pinMode(8, OUTPUT); //Initiates Brake Channel A pin

}

void loop(){

// JOYSTICK
val1 = analogRead(joy1);

//servoVal = analogRead(joyV);
//servoVal = map(servoVal, 0, 1023, 70, 180); // scale it to use it with the servo (result between 70 and 180)
val_final = map(val1, 0, 1023, 0, 180); // scale it to use it with the servo (result between 70 and 180)

delay(10);
val2 = analogRead(joy2);

Serial.print(val_final);
Serial.print(val2);
Serial.println();

/*************/

//Motor A forward @ full speed
digitalWrite(12, HIGH); //Establishes forward direction of Channel A
digitalWrite(9, LOW); //Disengage the Brake for Channel A
analogWrite(3, 255); //Spins the motor on Channel A at full speed

//Motor B backward @ half speed
digitalWrite(13, HIGH); //Establishes forward direction of Channel B
digitalWrite(8, LOW); //Disengage the Brake for Channel B
analogWrite(11, 123); //Spins the motor on Channel B at half speed

delay(3000);

digitalWrite(9, HIGH); //Engage the Brake for Channel A
digitalWrite(9, HIGH); //Engage the Brake for Channel B

delay(1000);

//Motor A forward @ full speed
digitalWrite(12, LOW); //Establishes backward direction of Channel A
digitalWrite(9, LOW); //Disengage the Brake for Channel A
analogWrite(3, 123); //Spins the motor on Channel A at half speed

//Motor B forward @ full speed
digitalWrite(13, HIGH); //Establishes forward direction of Channel B
digitalWrite(8, LOW); //Disengage the Brake for Channel B
analogWrite(11, 255); //Spins the motor on Channel B at full speed

delay(3000);

digitalWrite(9, HIGH); //Engage the Brake for Channel A
digitalWrite(9, HIGH); //Engage the Brake for Channel B

delay(1000);

}

Transistor

Amplificador
Entende-se por “amplificar” o procedimento de tornar um sinal elétrico mais fraco num mais forte. Um sinal elétrico de baixa intensidade, como os sinais gerados por um microfone, é injetado num circuito eletrônico (transistorizado por exemplo), cuja função principal é transformar este sinal fraco gerado pelo microfone em sinais elétricos com as mesmas características, mas com potência suficiente para excitar os alto-falantes. A este processo todo dá-se o nome de ganho de sinal.

No transistor de junção bipolar ou TJB (BJT – Bipolar Junction Transistor na terminologia inglesa), o controle da corrente coletor-emissor é feito injetando corrente na base. O efeito transistor ocorre quando a junção coletor-base é polarizada reversamente e a junção base-emissor é polarizada diretamente. Uma pequena corrente de base é suficiente para estabelecer uma corrente entre os terminais de coletor-emissor. Esta corrente será tão maior quanto maior for a corrente de base, de acordo com o ganho. Isso permite que o transistor funcione como amplificador pois ao se injetar uma pequena corrente na base se obtém uma alta tensão de saída. No entanto o transistor de silício só permite seu funcionamento com uma tensão entre base e emissor acima de 0,7V e 0,3V para o germânio.

Darlington Transistor
São dois transistores ligados em série.

Diodo / LED

Screen Shot 2013-12-04 at 11.22.44 AM

Circuitos de corrente contínua
A principal função de um diodo semicondutor, em circuitos de corrente contínua, é controlar o fluxo da corrente, permitindo que a corrente elétrica circule apenas em um sentido.

Circuitos retificadores de corrente
Os retificadores são circuitos elétricos que convertem a tensão CA (AC) em tensão CC (DC). CA vem de Corrente alternada, significa que os elétrons circulam em dois sentidos, CC (DC), Corrente contínua, isto é circula num só sentido.

Arduino + 8ohm speaker

IMG_20131201_151749

IMG_20131201_151753

/*
  Melody
 
 Plays a melody 
 
 circuit:
 * 8-ohm speaker on digital pin 8
 
 created 21 Jan 2010
 modified 30 Aug 2011
 by Tom Igoe 

This example code is in the public domain.
 
 http://arduino.cc/en/Tutorial/Tone
 
 */
 #include "pitches.h"

// notes in the melody:
int melody[] = {NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4};

// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
  4, 8, 8, 4,4,4,4,4 };

void setup() {
  // iterate over the notes of the melody:
  for (int thisNote = 0; thisNote < 8; thisNote++) {

    // to calculate the note duration, take one second 
    // divided by the note type.
    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
    int noteDuration = 1000/noteDurations[thisNote];
    tone(8, melody[thisNote],noteDuration);

    // to distinguish the notes, set a minimum time between them.
    // the note's duration + 30% seems to work well:
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    // stop the tone playing:
    noTone(8);
  }
}

void loop() {
  // no need to repeat the melody.
}

Arduino – LS-3006 Servo controlled by Keyes SJoys joystick

IMG_20131201_141242

IMG_20131201_141311

Basic code to control a servo:

// Sweep
// by BARRAGAN  
// This example code is in the public domain.

//arduino joystick test
//Janne Huotari

#include  
 
Servo myservo;  // create servo object to control a servo 
                // a maximum of eight servo objects can be created 
 
int pos = 0;    // variable to store the servo position 

int joy1 = 3;
int joy2 = 4;
int val1 = 0;
int val2 = 0;
int val_final = 0;

void setup() { 

  Serial.begin(9600);
  
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
} 
 
 
void loop() {
  
  // JOYSTICK
  val1 = analogRead(joy1);
  
  //servoVal = analogRead(joyV);           
  //servoVal = map(servoVal, 0, 1023, 70, 180);     // scale it to use it with the servo (result between 70 and 180)
  val_final = map(val1, 0, 1023, 0, 180);     // scale it to use it with the servo (result between 70 and 180)
  
  delay(10);
  val2 = analogRead(joy2);

  Serial.print(val_final);
  Serial.print(val2);
  Serial.println();
  
  myservo.write(val_final);
}