środa, 21 października 2015

Radio cz.2 - Wyświetlacz , potenciometr , pamięć !

Hej !
 Dziś krótko, stworzyłem ala radio z wyświetlaczem i pamięcią.


 Kod 1 - Wersja finalna działają buttony , wgrane najpopularniejsze stacje , brak jednoczesnej obsługi potenciometru ;C
//Sample using LiquidCrystal library
#include <LiquidCrystal.h>
#include <Wire.h>
#include <TEA5767Radio.h>
TEA5767Radio radio = TEA5767Radio();

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);


// define some values used by the panel and buttons
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

// read the buttons
int read_LCD_buttons()
{
 adc_key_in = analogRead(0);      // read the value from the sensor
 // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
 // we add approx 50 to those values and check to see if we are close
 if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
 // For V1.1 us this threshold
 if (adc_key_in < 50)   return btnRIGHT;
 if (adc_key_in < 250)  return btnUP;
 if (adc_key_in < 450)  return btnDOWN;
 if (adc_key_in < 650)  return btnLEFT;
 if (adc_key_in < 850)  return btnSELECT;
 return btnNONE;  // when all others fail, return this...
}

void setup()
{
  Wire.begin();
 lcd.begin(16, 2);              // start the library
 lcd.setCursor(0,0);
 lcd.print("R.Kasprzak 2000"); // print a simple message

}

void loop()
{
 lcd.setCursor(0,1);            // move to the begining of the second line
 lcd_key = read_LCD_buttons();
 switch (lcd_key)               // depending on which button was pushed, we perform an action
 {
   case btnRIGHT:
     {
     radio.setFrequency(104.4);
     lcd.print("Stacja VOX FM  ");
     break;
     }
   case btnLEFT:
     {
     radio.setFrequency(107.5);
     lcd.print("Stacja RadioZET");
   
     break;
     }
   case btnUP:
     {
     radio.setFrequency(92.4);
     lcd.print("Stacja Pol.1   ");
     break;
     }
   case btnDOWN:
     {
     radio.setFrequency(104.9);
     lcd.print("Stacja Pol.2   ");
     break;
     }
   case btnSELECT:
     {
    radio.setFrequency(104.4);
     lcd.print("VOX FM   ");
     break;
     }
   
 }

}

Kod 2 działa potenciometr ale kłóci się z buttonami.
//Sample using LiquidCrystal library
#include <LiquidCrystal.h>
#include <Wire.h>
#include <TEA5767Radio.h>
TEA5767Radio radio = TEA5767Radio();

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

unsigned char frequencyH = 0;
unsigned char frequencyL = 0;

unsigned int frequencyB;

double frequency = 0;

// define some values used by the panel and buttons

int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

// read the buttons

int read_LCD_buttons()
{
 adc_key_in = analogRead(0);      // read the value from the sensor
 // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
 // we add approx 50 to those values and check to see if we are close
 if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
 // For V1.1 us this threshold
 if (adc_key_in < 50)   return btnRIGHT;
 if (adc_key_in < 250)  return btnUP;
 if (adc_key_in < 450)  return btnDOWN;
 if (adc_key_in < 650)  return btnLEFT;
 if (adc_key_in < 850)  return btnSELECT;
 return btnNONE;  // when all others fail, return this...
}

void setup()

{
  Wire.begin();
 lcd.begin(16, 2);              // start the library
 lcd.setCursor(0,0);
 lcd.print("R.Kasprzak 2000"); // print a simple message
  frequency = 93.0; //starting frequency
  setFrequency();
  Serial.begin(9600);

}

void loop()

{
 


 lcd.setCursor(0,1);            // move to the begining of the second line

 lcd_key = read_LCD_buttons();
 switch (lcd_key)               // depending on which button was pushed, we perform an action
 {
   case btnRIGHT:
     {
     radio.setFrequency(104.4);
     lcd.print("Stacja VOX FM  ");
     break;
     }
   case btnLEFT:
     {
     radio.setFrequency(107.5);
     lcd.print("Stacja RadioZET");
   
     break;
     }
   case btnUP:
     {
     radio.setFrequency(92.4);
     lcd.print("Stacja Pol.1   ");
     break;
     }
   case btnDOWN:
     {
     radio.setFrequency(104.9);
     lcd.print("Stacja Pol.2   ");
     break;
     }
   case btnSELECT:
     {
    radio.setFrequency(104.4);
     lcd.print("VOX FM   ");
     break;
     }
     case btnNONE:
     {
       int reading = analogRead(7);
  //frequency = map((float)reading, 0.0, 1024.0, 87.5, 108.0);

  frequency = ((double)reading * (108.0 - 87.5)) / 1024.0 + 87.5;

  frequency = ((int)(frequency * 10)) / 10.0;

  setFrequency();

  Serial.println(frequency);
   
     break;
     }
   
 }

}


void setFrequency()

{
  frequencyB = 4 * (frequency * 1000000 + 225000) / 32768;
  frequencyH = frequencyB >> 8;
  frequencyL = frequencyB & 0XFF;
  delay(100);
  Wire.beginTransmission(0x60);
  Wire.write(frequencyH);
  Wire.write(frequencyL);
  Wire.write(0xB0);
  Wire.write(0x10);
  Wire.write((byte)0x00);
  Wire.endTransmission();
  delay(100);
}


środa, 14 października 2015

Test i podłączenie radia

o/

    Dzisiaj zobaczymy jak zrobić radio z arduino. Będzie nam potrzebny moduł TEA5767. Ten którego ja będę używał nie potrzebuje żadnego dodatkowego lutowania (możecie go znaleźć tutaj http://goo.gl/foim6U), ale można też użyć tańszego modelu, bez wbudowanego jacka czy anteny.

 
Zacznijmy od podłączenia.
  1. Wepnij moduł do płytki prototypowej
  2. Standardowo podłącz GND (masę) do GND na arduino
  3. SLC z SCL na arduino (na mojej płytce MEGA, to port 21)
  4. SDA z SDA (u mnie 20)
  5. VCC z zasilaniem 5V
   Teraz podłącz arduino do komputera, pobierz bibliotekę TEA5767 stąd: http://playground.arduino.cc/Main/TEA5767Radio i wrzuć ją do swojego folderu z bibliotekami arduino. Zaimportuj ją i powinieneś mieć przykład TEA5767 Radio/SimpleFixedFrequency. Jak coś nie wyjdzie to tutaj jest kod:


#include <Wire.h>
#include <TEA5767Radio.h>

TEA5767Radio radio = TEA5767Radio();

void setup()
  Wire.begin();
  radio.setFrequency(107.5); // Wybierz częstotliwość (Hz) stacji radiowej
}

void loop()
{
}

    Następnie wystarczy ustawić częstotliwość stacji radiowej, podłączyć słuchawki pod jacka i posłuchać muzyki.

Do zobaczenia!

sobota, 26 września 2015

Arduino Komunikacja RF cz.2- pierwszy program

Hej !

 Pokaże wam prosty kod, który można zastosować aby sterować wbudowaną diodą (13 pin) za pomocą przycisku na pilocie, kod świetnie nadaje się do rozbudowy, modyfikacji. Najśmieszniejsze jest to , że użyję wbudowanego przykładu - programu "Button"
Do rzeczy:

1. Wpinamy JY do płytki prototypowej.
2. Łączymy kablem pin 5V z 5V w Ardunio.
3. Łączymy kablem pin Gnd z Gnd w Ardunio.
4 .Łączymy kablem pin D0-D4 (dowolnie) z pinem 2 cyfrowym w Ardunino (można z innym, aczkolwiek należy ingerować w kod).
5. Odpalamy IDE, ustawiamy board itp.
6. Klikamy kolejno Plik , przykłady, Digital, Button.
7. Wgrywamy kod , następnie klikamy odpowiedni przycisk na pilocie, dioda powinna się zapalić. Jak widać, bardzo proste, a jak cieszy, sam kod pokazuje jak łatwo konfigurować to urządzenie.



Jeżeli nie masz dostępu do kodu (?) :
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
  }
  else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
}

piątek, 25 września 2015

Arduino Komunikacja RF cz.1

Hej!

 W tym poście pokaże w jaki sposób stworzyć bezprzewodowy system oparty o RF uruchomiony na Ardunio :)
  Czego używam: Jest to dość tani i popularny układ, który działa na kości SC2272-M4, model odbiornika to JY-JM5V, zaś nadajnik to bardzo ładny pilot z 4 klawiszami, zasilany baterią 12 V czyli tak jak klasyczne piloty np do samochodu, czy bramy. Zasięg to około 20 m bez dodatkowej przylutowanej anteny do JY-JM5V, dla ciekawostki wiem , że taki układ może ze sobą współpracować nawet na odległości 500 m.



















Piny D0 - D4 służą do komunikacji - tzn. kanały - te najczęściej podpinamy do portów cyfrowych.
Porty 5V i Gnd to odpowiednio napięcie i masa. Pin UT jeszcze mi się nie przydał, jak go rozpracuję to go opiszę w kolejnych częściach :)


Tymczasem jako iż dzisiaj mamy piątek odsyłam do składanki Lady Pank , bardzo fajnie się przy nich pisze i czyta :)    Best Of Lady Pank




piątek, 11 września 2015

Pinout i sterowniki - MEGA 2560 R3

Hej!

   Stwierdziłem , że jako to początek bloga należy zrobić jakiś wstęp do którego zawsze można się odwołać. :)
   Pierwszą rzeczą , która nie jednego usera Arduino doprowadziła do złości to oczywiście sterowniki, o ile na Linuxie najczęściej nie ma tego problemu, bo po prostu sprzęt sam się konfiguruje to w przypadku Windows problem może się pojawić , szczególnie przy braku internetu. Windows XP i starsze nie posiadają wbudowanego oprogramowania do automatycznego pobierania sterowników, dlatego te należy pobrać i ręcznie zainstalować wraz z programem do kompilowania projektów. Nowsze wersje systemu Windows łącznie z 10 posiadają tą bardzo wygodną funkcję :)
















   Drugą bardzo istotną rzeczą jest program do kompilowania kodu, o którym wcześniej wspomniałem.
   Użytkownicy systemu Windows XP i niżej dodatkowo znajdą sterownik do Megi.

   Całość można pobrać z oficialnej strony twórcy:
Getting Started- czyli kompletna instrukcja po Ang.
Oprogramowanie - sterownik i program pod różne OS'y

    PINOUT - czyli CO? JAK? GDZIE? Każdemu nowemu userowi na pewno pomoże ten schemat :)

To już koniec dzisiejszego postu. 
Powodzenia ! :)

Hello World! ;)

Dzień Dobry wszystkim! Od dziś będe się starał pokazywać różnorakie projekty związane z Arduino. :)