Arduino

Z MediaWiki SPŠ a VOŠ Písek
Skočit na navigaci Skočit na vyhledávání
Arduino

  • Mikrokontrolér: AVR ATmega168 / ATmega328
  • Takt procesoru: 16 MHz
  • Pracovní napětí: 5V (Vstupní napětí (doporučené): 7 až 12V)
  • 14 digitálních vstupně-výstupních pinů (z toho 6 s podporou PWM)
  • 6 analogových vstupů
  • Proudové zatížení I/O pinu: 40mA
  • Flash paměť: 16 KB (ATmega168) nebo 32 KB (ATmega328), z toho 2 KB zabírá bootloader
  • SRAM: 1 KB (ATmega168) nebo 2 KB (ATmega328)
  • EEPROM: 512 bytů (ATmega168) nebo 1 KB (ATmega328)

Arduino Duemilanove
Download SW
Schéma

Vývoj MIT aplikace s Arduino:

What we needs:

Sestavy:

Examples

/* Blink * http://www.arduino.cc/en/Tutorial/Blink
*/

int ledPin = 13;                // LED je připojena na pin 13

void setup(){                   // tato část proběhne jednou po startu
     pinMode(ledPin, OUTPUT);   // nastaví pin jako výstupní
}

void loop(){                      // procedura
    digitalWrite(ledPin, HIGH);   // rozsvícení LED
    delay(1000);                  // pauza 1s
    digitalWrite(ledPin, LOW);    // zhasnutí LED
    delay(1000);                  // pauza 1s
}

Tools:

  • .hex you can find in c:\Users\*\Local Settings\Temp\build*.tmp\*.hex

Tutorials:

Aplikace s Arduino

e

Videa

Experimenty



www

Arduino a USB

Arduino a PICAXE na Windows 8 64-bit


advance

Arduino IDE for programming Atmega Microcontrollers

How to program Arduino by using USBasp without bootloader

Building an Arduino on a Breadboard

Virtual Breadboard

Serial connection for your Arduino / Atmega

Basic Minimal Arduino Without Crystal

Minimal Arduino with ATmega8

Burning the Bootloader on ATMega328 using Arduino UNO as ISP

USBASP Bootloading a ATMega328p with a 8MHz internal clock

Make your own arduino serverino

Shield

How to Build the LOL Shield Kit

LoL Shield věnovaný sponzorem školy: jitenkaa, (zde je možné stavebnici objednat)

What is available...

Examples 2

  1. LED bliká v Morseově abecedě SOS ( . . . - - - . . . ) s opakováním s časovým odstupem 4 sekundy
  2. 8 LED bliká dle pravdivostní tabulky tak, aby svítala v daném čase postupně jen jedna LED (had)
  3. Aktivací tlačítka LED, která předtím svítila zhasne
  4. Každým zmáčknutím tlačítka se změní stav LED na opačný
  5. Jedním tlačítkem LED zhasne a jiným se rozsvítí

Test tlačítka

void setup()
{
  pinMode( 2, INPUT_PULLUP);
  pinMode( 8, OUTPUT);
}
 
void loop()
{
  digitalWrite( 8 , !digitalRead(2) );
}
const int buttonPin = 2;     // 
const int ledPin =  8;      // 

int buttonState = 0;         // variable

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}

void loop() {
  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH);
  }
  else {
    digitalWrite(ledPin, LOW);
  }
}

Traffic light

Soubor:Test-traffic-light.png
int pin;

void setup() {
       for (int i=4; i <= 13; i++){
        pinMode(i, OUTPUT);
   }
}

void blik(int pin)
{
        digitalWrite(pin, LOW);
        delay(500);
        digitalWrite(pin, HIGH);
}

void loop()
{
       for (int i=4; i <= 13; i++){
        blik(i);
   }
}

DC motor

int MotorL1 = 3; 
int MotorL2 = 11; 
int MotorR1 = 5; 
int MotorR2 = 6; 

void loop() {
  MotorForward();              
  delay(2000);              
  TurnLeft(); 
  delay(2000);              
}

void MotorForward() {
  digitalWrite(MotorL1, LOW);   // 
  digitalWrite(MotorL2, HIGH);  // 
  digitalWrite(MotorR1, LOW);   // 
  digitalWrite(MotorR2, HIGH);  // 
 }
  
void TurnLeft() {
  analogWrite(MotorL1, LOW);   // 
  analogWrite(MotorL2, 128);  // 
  analogWrite(MotorR1, 128);   // 
  digitalWrite(MotorR2, LOW);  // 
 }

RGB

.....

void loop()
{
  setColor(255, 0, 0);  // red
  delay(1000);
  setColor(0, 255, 0);  // green
  delay(1000);
  setColor(0, 0, 255);  // blue
  delay(1000);
  setColor(255, 255, 0);  // red + green
  delay(1000);  
  setColor(255, 0, 255);  // red + blue
  delay(1000);
  setColor(0, 255, 255);  // green + blue
  delay(1000);
}
 
void setColor(int red, int green, int blue)
{
  analogWrite(redPin, red);
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);  
}

SR04 ultrasonic

#define trigPin 8
#define echoPin 9

void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  long duration, distance;
  digitalWrite(trigPin, LOW);  
  delayMicroseconds(2); // 
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); //
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;

  Serial.print(distance);
  Serial.println(" cm");
  delay(500);
}

Servo

#include <Servo.h>

Servo myservo;  

int pos = 0;    

void setup() {
  myservo.attach(6); 
  Serial.begin (9600); 
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { 
    myservo.write(pos); 
   Serial.println(pos);             
    delay(20);                       
  }
  for (pos = 180; pos >= 0; pos -= 1) { 
    myservo.write(pos); 
   Serial.println(pos);                
    delay(20);                       
  }
}

RBT servo

#include <Servo.h>                    // Include servo library
 
Servo servoLeft;                      // Declare left servo signal
  unsigned char motion = 0;

void setup()                          // Built in initialization block
{
 pinMode(5,INPUT_PULLUP);
 pinMode(6,INPUT_PULLUP);
 pinMode(7,INPUT_PULLUP);
 pinMode(2,OUTPUT);
 pinMode(3,OUTPUT);
 pinMode(4,OUTPUT);
 pinMode(9,OUTPUT);
  servoLeft.attach(9);               // 
  Serial.begin (9600);
}

void loop() 
{
  motion = digitalRead(5) + digitalRead(6)*2 + digitalRead(7)*4;
  Serial.print(motion);
  Serial.println("");  
  switch(motion)
  {
    case 0b00000110:  servoLeft.write(30); digitalWrite(4,HIGH); digitalWrite(3,HIGH); digitalWrite(2,LOW); break;
    case 0b00000101:  servoLeft.write(60); digitalWrite(4,HIGH); digitalWrite(3,LOW); digitalWrite(2,HIGH); break;
    case 0b00000011:  servoLeft.write(90); digitalWrite(4,LOW); digitalWrite(3,HIGH); digitalWrite(2,HIGH); break;
    case 0b00000111:  servoLeft.write(120); digitalWrite(4,HIGH); digitalWrite(3,HIGH); digitalWrite(2,HIGH); break;
    delay(15);
  }
}