Blog (83)
Komentarze (2k)
Recenzje (1)

Intel Edison — piszemy kod pod Arduino

Strona główna@cyrylloIntel Edison — piszemy kod pod Arduino
07.01.2015 00:22

W Intel Edison tak samo jak w Intel Galileo możemy programować Edisona za pomocą Arduino IDE. W tym celu użyję wersji Standard, która ma już wyprowadzone złącza GPIO podobnie jak w Arduino UNO. W tym wpisie pokażę jak radzi sobie Edison ze sterowaniem wyświetlaczem LCD, sterowaniem silników za pomocą PWM, sterowaniem serwami oraz świeceniem diodami.

538136

Przygotowanie środowiska programistycznego

Arduino IDE w wersji dla Edisona możemy pobrać z działu Download projektu. Dostępne są wersje dla systemów Windows, Linux i Mac OS. Użytkownicy Windowsa powinni jeszcze zainstalować sterowniki.

538139

Po instalacji sterowników i podłączeniu intel Edisona do komputera możemy uruchomić pobrane wcześniej Arduino IDE dedykowane dla płyt Intela.

538141

Wybieramy z Narzędzia>Płytka>Intel Edison oraz numer portu Narzędzia>Port szeregowy. Od tej chwili możemy już programować naszego Edisona.

Podłączona płytka do komputera
Podłączona płytka do komputera

Sterowanie diodami

Zaczniemy od prostego sterowania pinami cyfrowymi za pomocą których będziemy sterować diodami. Wykonam prosty przykład efektu świetlnego z filmu Knight Rider (Nieustraszony) w którym samochód bohatera miał ten efekt na przedniej masce.

bEhsrLCf


int i=0;

void setup()
{
for( i = 2; i <= 6; i++)
{
  pinMode(i, OUTPUT);
}  
}

void loop()
{
for(i = 2; i < 6; i++)
{
 digitalWrite(i, HIGH);
 delay(50);
 digitalWrite(i + 1, HIGH);
 delay(50);
 digitalWrite(i, LOW);
 delay(50);
}
for(i = 6; i > 1 ; i--)
{
 digitalWrite(i, HIGH);
 delay(50);
 digitalWrite(i - 1, HIGH);
 delay(50);
 digitalWrite(i, LOW);
 delay(50);
}

}

Efekt końcowy powyższego kodu. [youtube=https://www.youtube.com/watch?v=5BuPMtenVmQ]

Sterowanie silnikami

W tym przykładzie użyłem PWM do sterowania obrotami silnika. Silnik podłączony jest do sterownika silników. Za ustawienie prędkości odpowiada potencjometr, którym będę kręcił, aby ustawić prędkość obrotów silnika.

bEhsrLCl

int silnik = 9; 
int potencjometr = A0; 
int i = 0;

void setup()
{
  pinMode(silnik, OUTPUT); 
  pinMode(potencjometr, INPUT); 
}

void loop()
{
  i = analogRead(potencjometr);
  analogWrite(silnik, i / 4);
}

Poniżej prezentuję efekt działania programu.

Sterowanie serwem

Teraz pora na sterowanie serwem. Będę obracać serwem o 180 stopni w obydwu kierunkach.

bEhsrLCm

#include <Servo.h>

Servo servoMain;
int i = 0; 
void setup()
{
   servoMain.attach(9); 
}

void loop()
{
  for(i = 0; i <= 180; i++)
  {
   servoMain.write(i);  
   delay(2);        
  }
delay(1000);
   for(i = 180; i >= 0; i--)
  {
   servoMain.write(i);   
   delay(2);         
  }
  delay(1000);
}

Po wgraniu powyższego kodu mamy taki oto efekt [youtube=https://www.youtube.com/watch?v=aUBVp__z98k]

Zabawa z wyświetlaczem LCD

Pora na test wyświetlacza LCD, którym będę sterować za pomocą biblioteki LiquidCrystal_I2C. Użyłem modułu I2C dla ekranu aby zmniejszyć ilość potrzebnych kabli połączeniowych.

bEhsrLCn

//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2); 

void setup()
{
  lcd.init();
  lcd.backlight();  
}

void loop()
{ 

  delay(2000);
  lcd.print("Pozdrowienia");
  lcd.setCursor(0, 1);
  lcd.print("dla czytelnikow");
  delay(4000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("dobreprogramy.pl");
  delay(1000);
  lcd.setCursor(0, 1);
  lcd.print("od Cyryllo");
  delay(1000);
  lcd.print(" ;)");
  delay(6000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Intel Edison");
  delay(2000);
  lcd.setCursor(0, 1);
  lcd.print("i Arduino"); 
  delay(6000);
  lcd.clear();
}

Poniżej wynik działania powyższego kodu [youtube=https://www.youtube.com/watch?v=jtQbnUjLi1A]

Podsumowanie

Jak widać Intel Edison daje sobie radę przy korzystaniu z Arduino IDE. Jednak nie na tym polu Edison powinien walczyć z innymi mikrokontrolerami czy picoboardami. Porównując cenę Edisona do innych Arduino to nie ma sensu kupować Edisona jeśli chcemy używać go tylko jako Arduino. Moc tego urządzenia jest zapewne w Linuksie i jego modułach wifi i bluetooth więc w kolejnym wpisie sprawdzę co Linux potrafi zdziałać na Intel Edison.

bEhsrLDb