Şimdi Ara

Ardunio ile lazerle(ışıkda olabilir) veri iletimi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
12
Cevap
1
Favori
1.057
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • bilgisayar müh. son sınıfım tasarım projesi olarak hocamız 2 ardunio arasında kodlama ve dekodlama yapmamızı istiyor.Projede 2 ardunio kullanılacak ve ardunio aldığı .text dosyasını lazerle(ışıkla) karşı ardunioya iletecek .Mor alfabesi taktiğiyle . Hangi ardunio türünü kullanmam vede ne tür malzemeler almam gerekir bu konu hakkında fikrim yok .



  • Selam,
    Yapılacaklar listeme ekledim

    İlk akla gelen :

    * PC den TEXT i alıp Arduino'ya seri olarak iletecek program ( Processing ? )
    * Arduino'da gelen karakterleri alıp mors koduna çevirip laser'i anahtarlayan program ( Arduino IDE ile )
    * Arduino OUTPUT pin'lerinden komut alıp laser'i on/off yapacak donanım ( transistor, mosfet, röle, 4066.)
    * Laser iletim ortamı ( hava, fiber optik kablo )
    * Gelen ışığı alıp digital sinyale çeviren donanım ( LDR , IR Led, FotoTransistor ? )
    * Digital sinyalleri alıp karakter bilgisine çevirecek ve LCD ye yazacak program ( Arduino IDE. İnterrupt mı kullanılacak, belli zamanlarda input pinleri kontrol mu edilecek ? )
    * Karakterleri gösterecek LCD bağlantısı ( 2x16 , 12864 ? )


    * Herhangi bir Arduino ( Uno, Mega, Pro Mini, Due ) olur bence.

    Kolay gelsin, diğer projelerden fırsat bulup yapabilirsem yazarım.





  • < Bu ileti mobil sürüm kullanılarak atıldı >
  • 1. program hazır :http://silveiraneto.net/2009/02/28/morse-code-translator-with-arduino/ ( insanın hevesini kursağında bırakıyorlar. )
  • Sonuç ?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Henüz sonuç yok ama gelişme var:

    http://youtu.be/KfUw48uZaj4

    1. Arduino'nun 13. pin'i ile GND arasına laser pointer direkt bağladım.
    1. program da olduğu gibi çalışıyor . ( videoda SOS göndermesi için modifiye ettim.

    2. Arduino'ya bir direnç (2.2K) ve bir LDR yi gerilim bölücü şeklinde bağladım.
    GND-----2.2K--------LDR------+5V
    ..................... |
    ..................... |
    .....................A0

    2. programı da biraz modifiye ettim, 1. nin gönderdiği laser sinyaline göre LED'ini yakıp söndürebiliyor.
    Sinyalleri harflere çevirme biraz karışık gibi, programı tam anlayamazsam sıfırdan yazmam gerekecek.




  • Mors kodu yerine binary ile gönderseniz (0 1 kulanarak) okuması daha kolay olur bence.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Benim de aklıma geldi ama şöyle birşey geldi 2 tane lazer ce okuyucu olacak 1. Lazer 01... Fln kodliyacak 2 . lazer boşluk manasına gelecek

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Selam,

    Sanırım oldu.
    1. Program çok az bir ekleme ile sürekli aynı mesajı gönderiyor.
    2. Program mesajı alıp seri porta mors kodunu ve karakteri yazıyor.

     Ardunio ile lazerle(ışıkda olabilir) veri iletimi


     Ardunio ile lazerle(ışıkda olabilir) veri iletimi


    MorseGonderici.ino

     
    /*
    PIN13 --------LASER.POINTER------ GND
    */

    int led = 13; // LED connected to digital pin 13
    int unit = 50; // duration of a pulse

    char * morsecode[] = {
    "-----", // 0
    ".----", // 1
    "..---", // 2
    "...--", // 3
    "....-", // 4
    ".....", // 5
    "-....", // 6
    "--...", // 7
    "---..", // 8
    "----.", // 9
    "---...", // :
    "-.-.-.", // ;
    "", // < (there's no morse for this simbol)
    "-...-", // =
    "", // > (there's no morse for this simbol)
    "..--..", // ?
    ".--._.", // @
    ".-", // A
    "-...", // B
    "-.-.", // C
    "-..", // D
    ".", // E
    "..-.", // F
    "--.", // G
    "....", // H
    "..", // I
    ".---", // J
    "-.-", // K
    ".-..", // L
    "--", // M
    "-.", // N
    "---", // O
    ".--.", // P
    "--.-", // Q
    ".-.", // R
    "...", // S
    "-", // T
    "..-", // U
    "...-", // V
    ".--", // W
    "-..-", // X
    "-.--", // Y
    "--.." // Z
    };
    char * kelime = "MORS KODU GONDERICI" ;

    void setup() {
    pinMode(led, OUTPUT);
    Serial.begin(9600);
    }

    void loop(){
    say_string(kelime) ;
    delay(3000) ;
    }

    void say_morse_word(char * msg){
    int index = 0;
    while(msg[index]!='\0'){
    // say a dash
    if(msg[index]=='-'){
    dash();
    }
    // say a dot
    if(msg[index]=='.'){
    dot();
    }
    // gap beetween simbols
    intragap();
    index++;
    }
    }

    void say_string(char * asciimsg){
    int index = 0;
    char charac;
    charac = asciimsg[index];
    while(charac!='\0'){
    say_char(charac);
    charac = asciimsg[++index];
    shortgap();
    }
    }


    void say_char(char letter){
    if((letter>='0')&&(letter<='Z')&&(letter!='<')&&(letter!='>')){
    Serial.print(morsecode[letter-'0']);
    Serial.print(' ');
    say_morse_word(morsecode[letter-'0']);
    shortgap();
    } else {
    if(letter==' '){
    Serial.print(" \\ ");
    mediumgap();
    }else{
    Serial.print("X");
    }
    }
    }


    // general procedure for .
    void dot() {
    digitalWrite(led, HIGH);
    delay(unit);
    }

    // general procedure for -
    void dash() {
    digitalWrite(led, HIGH);
    delay(unit*2);
    }

    // gap between dots and dashes
    void intragap() {
    digitalWrite(led, LOW);
    delay(unit*3);
    }

    // gap between letters
    void shortgap() {
    digitalWrite(led, LOW);
    delay(unit*4);
    }

    // gap be tween words
    void mediumgap() {
    digitalWrite(led, LOW);
    delay(unit*5);
    }


    MorseAlici.ino
     
    /*
    PIN2 -----|----LDR---------- +5V
    |
    |------2,2K------- GND

    2.2K - pulldown resistor, LDR nin tipine göre 5K , 10K denenebilir.
    */

    int pin = 13;
    volatile int state = LOW;
    unsigned long milisec;
    unsigned int isikacildi , aydinliksuresi , isikkapandi , karanliksuresi ;
    int birim = 50 ; // gönderen programdaki birim ile aynı olmalı
    int noktasuresimax = birim + birim / 10 ; // bu ikisi ısıgın yanık kalma süresi
    int cizgisuresimax = birim*2 + birim*2 / 10 ;
    int noktacizgiarasimin = birim*3 + birim*3 / 10 ; // bu ucu ısıgın kapalı kalma süreleri
    int harfarasimin = birim*4 + birim*4 / 10 ;
    int kelimearasimin = birim*5 + birim*5 / 10 ;
    int harfarasikaranlik = birim*8 ;
    // yukarıdaki değerler, LDR nin ne kadar aydınlandığına göre küçük bir miktar değişiyor. Deneme yapılmalı
    String sembol = ""; // buffer

    void setup()
    { Serial.begin(9600);
    pinMode(pin, OUTPUT);
    attachInterrupt(0, rising, RISING); // PIN 2 yükselirse ---> rising()
    }

    void loop()
    { digitalWrite(pin, state);}

    void rising()
    { isikacildi = millis() ; // laserin yanmaya başladığı zaman
    karanliksuresi = millis() - isikkapandi ; // laser ne kadar kapalı kaldı
    if ( karanliksuresi > harfarasikaranlik ) { // harf bitti mi ?
    Serial.print(sembol); // mors kodunu ve karşılığını yaz
    Serial.print(" "); //
    mors2harf() ; //
    Serial.println(sembol); //
    sembol = ""; // sembol'ü sifirla
    }
    else if ( karanliksuresi > kelimearasimin ) { } // kelime bitti mi ? to do
    attachInterrupt(0, falling , FALLING); // PIN 2 düşerse ---> falling()
    state = !state; // LED in durumunu toggle et
    }

    void falling()
    { isikkapandi = millis() ; // laserin kapandığı zaman
    aydinliksuresi = millis() - isikacildi ; // laser ne kadar yanık kaldı
    if ( aydinliksuresi < noktasuresimax ) { // bu bir nokta mıdır ?
    sembol = sembol + "." ; // sembol'e nokta ekle
    }
    else if ( aydinliksuresi < cizgisuresimax ) { // bu bir çizgi midir ?
    sembol = sembol + "-" ; // sembol'e çizgi ekle
    }
    attachInterrupt(0, rising , RISING); // PIN 2 yükselirse ---> rising()
    state = !state;
    }

    void mors2harf() // düzgün bir fonksiyon yazamadım...
    {
    if (sembol == "-----") { sembol = "0" ; return ; }
    if (sembol == ".----") { sembol = "1" ; return ; }
    if (sembol == "..---") { sembol = "2" ; return ; }
    if (sembol == "...--") { sembol = "3" ; return ; }
    if (sembol == "....-") { sembol = "4" ; return ; }
    if (sembol == ".....") { sembol = "5" ; return ; }
    if (sembol == "-....") { sembol = "6" ; return ; }
    if (sembol == "--...") { sembol = "7" ; return ; }
    if (sembol == "---..") { sembol = "8" ; return ; }
    if (sembol == "----.") { sembol = "9" ; return ; }
    if (sembol == "---..."){ sembol = ":" ; return ; }
    if (sembol == "-.-.-."){ sembol = ";" ; return ; }
    if (sembol == "-...-") { sembol = "==" ; return ; }
    if (sembol == "..--.."){ sembol = "?" ; return ; }
    if (sembol == ".--._."){ sembol = "@" ; return ; }
    if (sembol == ".-") { sembol = "A" ; return ; }
    if (sembol == "-...") { sembol = "B" ; return ; }
    if (sembol == "-.-.") { sembol = "C" ; return ; }
    if (sembol == "-..") { sembol = "D" ; return ; }
    if (sembol == ".") { sembol = "E" ; return ; }
    if (sembol == "..-.") { sembol = "F" ; return ; }
    if (sembol == "--.") { sembol = "G" ; return ; }
    if (sembol == "....") { sembol = "H" ; return ; }
    if (sembol == "..") { sembol = "I" ; return ; }
    if (sembol == ".---") { sembol = "J" ; return ; }
    if (sembol == "-.-") { sembol = "K" ; return ; }
    if (sembol == ".-..") { sembol = "L" ; return ; }
    if (sembol == "--") { sembol = "M" ; return ; }
    if (sembol == "-.") { sembol = "N" ; return ; }
    if (sembol == "---") { sembol = "O" ; return ; }
    if (sembol == ".--.") { sembol = "P" ; return ; }
    if (sembol == "--.-") { sembol = "Q" ; return ; }
    if (sembol == ".-.") { sembol = "R" ; return ; }
    if (sembol == "...") { sembol = "S" ; return ; }
    if (sembol == "-") { sembol = "T" ; return ; }
    if (sembol == "..-") { sembol = "U" ; return ; }
    if (sembol == "...-") { sembol = "V" ; return ; }
    if (sembol == ".--") { sembol = "W" ; return ; }
    if (sembol == "-..-") { sembol = "X" ; return ; }
    if (sembol == "-.--") { sembol = "Y" ; return ; }
    if (sembol == "--..") { sembol = "Z" ; return ; }
    }




    < Bu mesaj bu kişi tarafından değiştirildi tecevit -- 2 Kasım 2014; 21:39:37 >




  • quote:

    Orijinalden alıntı: tecevit


    Selam,

    Sanırım oldu.
    1. Program çok az bir ekleme ile sürekli aynı mesajı gönderiyor.
    2. Program mesajı alıp seri porta mors kodunu ve karakteri yazıyor.

     Ardunio ile lazerle(ışıkda olabilir) veri iletimi


     Ardunio ile lazerle(ışıkda olabilir) veri iletimi


    MorseGonderici.ino

     
    /*
    PIN13 --------LASER.POINTER------ GND
    */

    int led = 13; // LED connected to digital pin 13
    int unit = 50; // duration of a pulse

    char * morsecode[] = {
    "-----", // 0
    ".----", // 1
    "..---", // 2
    "...--", // 3
    "....-", // 4
    ".....", // 5
    "-....", // 6
    "--...", // 7
    "---..", // 8
    "----.", // 9
    "---...", // :
    "-.-.-.", // ;
    "", // < (there's no morse for this simbol)
    "-...-", // =
    "", // > (there's no morse for this simbol)
    "..--..", // ?
    ".--._.", // @
    ".-", // A
    "-...", // B
    "-.-.", // C
    "-..", // D
    ".", // E
    "..-.", // F
    "--.", // G
    "....", // H
    "..", // I
    ".---", // J
    "-.-", // K
    ".-..", // L
    "--", // M
    "-.", // N
    "---", // O
    ".--.", // P
    "--.-", // Q
    ".-.", // R
    "...", // S
    "-", // T
    "..-", // U
    "...-", // V
    ".--", // W
    "-..-", // X
    "-.--", // Y
    "--.." // Z
    };
    char * kelime = "MORS KODU GONDERICI" ;

    void setup() {
    pinMode(led, OUTPUT);
    Serial.begin(9600);
    }

    void loop(){
    say_string(kelime) ;
    delay(3000) ;
    }

    void say_morse_word(char * msg){
    int index = 0;
    while(msg[index]!='\0'){
    // say a dash
    if(msg[index]=='-'){
    dash();
    }
    // say a dot
    if(msg[index]=='.'){
    dot();
    }
    // gap beetween simbols
    intragap();
    index++;
    }
    }

    void say_string(char * asciimsg){
    int index = 0;
    char charac;
    charac = asciimsg[index];
    while(charac!='\0'){
    say_char(charac);
    charac = asciimsg[++index];
    shortgap();
    }
    }


    void say_char(char letter){
    if((letter>='0')&&(letter<='Z')&&(letter!='<')&&(letter!='>')){
    Serial.print(morsecode[letter-'0']);
    Serial.print(' ');
    say_morse_word(morsecode[letter-'0']);
    shortgap();
    } else {
    if(letter==' '){
    Serial.print(" \\ ");
    mediumgap();
    }else{
    Serial.print("X");
    }
    }
    }


    // general procedure for .
    void dot() {
    digitalWrite(led, HIGH);
    delay(unit);
    }

    // general procedure for -
    void dash() {
    digitalWrite(led, HIGH);
    delay(unit*2);
    }

    // gap between dots and dashes
    void intragap() {
    digitalWrite(led, LOW);
    delay(unit*3);
    }

    // gap between letters
    void shortgap() {
    digitalWrite(led, LOW);
    delay(unit*4);
    }

    // gap be tween words
    void mediumgap() {
    digitalWrite(led, LOW);
    delay(unit*5);
    }


    MorseAlici.ino
     
    /*
    PIN2 -----|----LDR---------- +5V
    |
    |------2,2K------- GND

    2.2K - pulldown resistor, LDR nin tipine göre 5K , 10K denenebilir.
    */

    int pin = 13;
    volatile int state = LOW;
    unsigned long milisec;
    unsigned int isikacildi , aydinliksuresi , isikkapandi , karanliksuresi ;
    int birim = 50 ; // gönderen programdaki birim ile aynı olmalı
    int noktasuresimax = birim + birim / 10 ; // bu ikisi ısıgın yanık kalma süresi
    int cizgisuresimax = birim*2 + birim*2 / 10 ;
    int noktacizgiarasimin = birim*3 + birim*3 / 10 ; // bu ucu ısıgın kapalı kalma süreleri
    int harfarasimin = birim*4 + birim*4 / 10 ;
    int kelimearasimin = birim*5 + birim*5 / 10 ;
    int harfarasikaranlik = birim*8 ;
    // yukarıdaki değerler, LDR nin ne kadar aydınlandığına göre küçük bir miktar değişiyor. Deneme yapılmalı
    String sembol = ""; // buffer

    void setup()
    { Serial.begin(9600);
    pinMode(pin, OUTPUT);
    attachInterrupt(0, rising, RISING); // PIN 2 yükselirse ---> rising()
    }

    void loop()
    { digitalWrite(pin, state);}

    void rising()
    { isikacildi = millis() ; // laserin yanmaya başladığı zaman
    karanliksuresi = millis() - isikkapandi ; // laser ne kadar kapalı kaldı
    if ( karanliksuresi > harfarasikaranlik ) { // harf bitti mi ?
    Serial.print(sembol); // mors kodunu ve karşılığını yaz
    Serial.print(" "); //
    mors2harf() ; //
    Serial.println(sembol); //
    sembol = ""; // sembol'ü sifirla
    }
    else if ( karanliksuresi > kelimearasimin ) { } // kelime bitti mi ? to do
    attachInterrupt(0, falling , FALLING); // PIN 2 düşerse ---> falling()
    state = !state; // LED in durumunu toggle et
    }

    void falling()
    { isikkapandi = millis() ; // laserin kapandığı zaman
    aydinliksuresi = millis() - isikacildi ; // laser ne kadar yanık kaldı
    if ( aydinliksuresi < noktasuresimax ) { // bu bir nokta mıdır ?
    sembol = sembol + "." ; // sembol'e nokta ekle
    }
    else if ( aydinliksuresi < cizgisuresimax ) { // bu bir çizgi midir ?
    sembol = sembol + "-" ; // sembol'e çizgi ekle
    }
    attachInterrupt(0, rising , RISING); // PIN 2 yükselirse ---> rising()
    state = !state;
    }

    void mors2harf() // düzgün bir fonksiyon yazamadım...
    {
    if (sembol == "-----") { sembol = "0" ; return ; }
    if (sembol == ".----") { sembol = "1" ; return ; }
    if (sembol == "..---") { sembol = "2" ; return ; }
    if (sembol == "...--") { sembol = "3" ; return ; }
    if (sembol == "....-") { sembol = "4" ; return ; }
    if (sembol == ".....") { sembol = "5" ; return ; }
    if (sembol == "-....") { sembol = "6" ; return ; }
    if (sembol == "--...") { sembol = "7" ; return ; }
    if (sembol == "---..") { sembol = "8" ; return ; }
    if (sembol == "----.") { sembol = "9" ; return ; }
    if (sembol == "---..."){ sembol = ":" ; return ; }
    if (sembol == "-.-.-."){ sembol = ";" ; return ; }
    if (sembol == "-...-") { sembol = "==" ; return ; }
    if (sembol == "..--.."){ sembol = "?" ; return ; }
    if (sembol == ".--._."){ sembol = "@" ; return ; }
    if (sembol == ".-") { sembol = "A" ; return ; }
    if (sembol == "-...") { sembol = "B" ; return ; }
    if (sembol == "-.-.") { sembol = "C" ; return ; }
    if (sembol == "-..") { sembol = "D" ; return ; }
    if (sembol == ".") { sembol = "E" ; return ; }
    if (sembol == "..-.") { sembol = "F" ; return ; }
    if (sembol == "--.") { sembol = "G" ; return ; }
    if (sembol == "....") { sembol = "H" ; return ; }
    if (sembol == "..") { sembol = "I" ; return ; }
    if (sembol == ".---") { sembol = "J" ; return ; }
    if (sembol == "-.-") { sembol = "K" ; return ; }
    if (sembol == ".-..") { sembol = "L" ; return ; }
    if (sembol == "--") { sembol = "M" ; return ; }
    if (sembol == "-.") { sembol = "N" ; return ; }
    if (sembol == "---") { sembol = "O" ; return ; }
    if (sembol == ".--.") { sembol = "P" ; return ; }
    if (sembol == "--.-") { sembol = "Q" ; return ; }
    if (sembol == ".-.") { sembol = "R" ; return ; }
    if (sembol == "...") { sembol = "S" ; return ; }
    if (sembol == "-") { sembol = "T" ; return ; }
    if (sembol == "..-") { sembol = "U" ; return ; }
    if (sembol == "...-") { sembol = "V" ; return ; }
    if (sembol == ".--") { sembol = "W" ; return ; }
    if (sembol == "-..-") { sembol = "X" ; return ; }
    if (sembol == "-.--") { sembol = "Y" ; return ; }
    if (sembol == "--..") { sembol = "Z" ; return ; }
    }


     Ardunio ile lazerle(ışıkda olabilir) veri iletimi Ardunio ile lazerle(ışıkda olabilir) veri iletimi Ardunio ile lazerle(ışıkda olabilir) veri iletimi

    ıyıye benzıyor ılk fırsatta deneyeceım




  • quote:

    Orijinalden alıntı: .koray.

    quote:

    Orijinalden alıntı: tecevit


    Selam,

    Sanırım oldu.
    1. Program çok az bir ekleme ile sürekli aynı mesajı gönderiyor.
    2. Program mesajı alıp seri porta mors kodunu ve karakteri yazıyor.

     Ardunio ile lazerle(ışıkda olabilir) veri iletimi


     Ardunio ile lazerle(ışıkda olabilir) veri iletimi


    MorseGonderici.ino

     
    /*
    PIN13 --------LASER.POINTER------ GND
    */

    int led = 13; // LED connected to digital pin 13
    int unit = 50; // duration of a pulse

    char * morsecode[] = {
    "-----", // 0
    ".----", // 1
    "..---", // 2
    "...--", // 3
    "....-", // 4
    ".....", // 5
    "-....", // 6
    "--...", // 7
    "---..", // 8
    "----.", // 9
    "---...", // :
    "-.-.-.", // ;
    "", // < (there's no morse for this simbol)
    "-...-", // =
    "", // > (there's no morse for this simbol)
    "..--..", // ?
    ".--._.", // @
    ".-", // A
    "-...", // B
    "-.-.", // C
    "-..", // D
    ".", // E
    "..-.", // F
    "--.", // G
    "....", // H
    "..", // I
    ".---", // J
    "-.-", // K
    ".-..", // L
    "--", // M
    "-.", // N
    "---", // O
    ".--.", // P
    "--.-", // Q
    ".-.", // R
    "...", // S
    "-", // T
    "..-", // U
    "...-", // V
    ".--", // W
    "-..-", // X
    "-.--", // Y
    "--.." // Z
    };
    char * kelime = "MORS KODU GONDERICI" ;

    void setup() {
    pinMode(led, OUTPUT);
    Serial.begin(9600);
    }

    void loop(){
    say_string(kelime) ;
    delay(3000) ;
    }

    void say_morse_word(char * msg){
    int index = 0;
    while(msg[index]!='\0'){
    // say a dash
    if(msg[index]=='-'){
    dash();
    }
    // say a dot
    if(msg[index]=='.'){
    dot();
    }
    // gap beetween simbols
    intragap();
    index++;
    }
    }

    void say_string(char * asciimsg){
    int index = 0;
    char charac;
    charac = asciimsg[index];
    while(charac!='\0'){
    say_char(charac);
    charac = asciimsg[++index];
    shortgap();
    }
    }


    void say_char(char letter){
    if((letter>='0')&&(letter<='Z')&&(letter!='<')&&(letter!='>')){
    Serial.print(morsecode[letter-'0']);
    Serial.print(' ');
    say_morse_word(morsecode[letter-'0']);
    shortgap();
    } else {
    if(letter==' '){
    Serial.print(" \\ ");
    mediumgap();
    }else{
    Serial.print("X");
    }
    }
    }


    // general procedure for .
    void dot() {
    digitalWrite(led, HIGH);
    delay(unit);
    }

    // general procedure for -
    void dash() {
    digitalWrite(led, HIGH);
    delay(unit*2);
    }

    // gap between dots and dashes
    void intragap() {
    digitalWrite(led, LOW);
    delay(unit*3);
    }

    // gap between letters
    void shortgap() {
    digitalWrite(led, LOW);
    delay(unit*4);
    }

    // gap be tween words
    void mediumgap() {
    digitalWrite(led, LOW);
    delay(unit*5);
    }


    MorseAlici.ino
     
    /*
    PIN2 -----|----LDR---------- +5V
    |
    |------2,2K------- GND

    2.2K - pulldown resistor, LDR nin tipine göre 5K , 10K denenebilir.
    */

    int pin = 13;
    volatile int state = LOW;
    unsigned long milisec;
    unsigned int isikacildi , aydinliksuresi , isikkapandi , karanliksuresi ;
    int birim = 50 ; // gönderen programdaki birim ile aynı olmalı
    int noktasuresimax = birim + birim / 10 ; // bu ikisi ısıgın yanık kalma süresi
    int cizgisuresimax = birim*2 + birim*2 / 10 ;
    int noktacizgiarasimin = birim*3 + birim*3 / 10 ; // bu ucu ısıgın kapalı kalma süreleri
    int harfarasimin = birim*4 + birim*4 / 10 ;
    int kelimearasimin = birim*5 + birim*5 / 10 ;
    int harfarasikaranlik = birim*8 ;
    // yukarıdaki değerler, LDR nin ne kadar aydınlandığına göre küçük bir miktar değişiyor. Deneme yapılmalı
    String sembol = ""; // buffer

    void setup()
    { Serial.begin(9600);
    pinMode(pin, OUTPUT);
    attachInterrupt(0, rising, RISING); // PIN 2 yükselirse ---> rising()
    }

    void loop()
    { digitalWrite(pin, state);}

    void rising()
    { isikacildi = millis() ; // laserin yanmaya başladığı zaman
    karanliksuresi = millis() - isikkapandi ; // laser ne kadar kapalı kaldı
    if ( karanliksuresi > harfarasikaranlik ) { // harf bitti mi ?
    Serial.print(sembol); // mors kodunu ve karşılığını yaz
    Serial.print(" "); //
    mors2harf() ; //
    Serial.println(sembol); //
    sembol = ""; // sembol'ü sifirla
    }
    else if ( karanliksuresi > kelimearasimin ) { } // kelime bitti mi ? to do
    attachInterrupt(0, falling , FALLING); // PIN 2 düşerse ---> falling()
    state = !state; // LED in durumunu toggle et
    }

    void falling()
    { isikkapandi = millis() ; // laserin kapandığı zaman
    aydinliksuresi = millis() - isikacildi ; // laser ne kadar yanık kaldı
    if ( aydinliksuresi < noktasuresimax ) { // bu bir nokta mıdır ?
    sembol = sembol + "." ; // sembol'e nokta ekle
    }
    else if ( aydinliksuresi < cizgisuresimax ) { // bu bir çizgi midir ?
    sembol = sembol + "-" ; // sembol'e çizgi ekle
    }
    attachInterrupt(0, rising , RISING); // PIN 2 yükselirse ---> rising()
    state = !state;
    }

    void mors2harf() // düzgün bir fonksiyon yazamadım...
    {
    if (sembol == "-----") { sembol = "0" ; return ; }
    if (sembol == ".----") { sembol = "1" ; return ; }
    if (sembol == "..---") { sembol = "2" ; return ; }
    if (sembol == "...--") { sembol = "3" ; return ; }
    if (sembol == "....-") { sembol = "4" ; return ; }
    if (sembol == ".....") { sembol = "5" ; return ; }
    if (sembol == "-....") { sembol = "6" ; return ; }
    if (sembol == "--...") { sembol = "7" ; return ; }
    if (sembol == "---..") { sembol = "8" ; return ; }
    if (sembol == "----.") { sembol = "9" ; return ; }
    if (sembol == "---..."){ sembol = ":" ; return ; }
    if (sembol == "-.-.-."){ sembol = ";" ; return ; }
    if (sembol == "-...-") { sembol = "==" ; return ; }
    if (sembol == "..--.."){ sembol = "?" ; return ; }
    if (sembol == ".--._."){ sembol = "@" ; return ; }
    if (sembol == ".-") { sembol = "A" ; return ; }
    if (sembol == "-...") { sembol = "B" ; return ; }
    if (sembol == "-.-.") { sembol = "C" ; return ; }
    if (sembol == "-..") { sembol = "D" ; return ; }
    if (sembol == ".") { sembol = "E" ; return ; }
    if (sembol == "..-.") { sembol = "F" ; return ; }
    if (sembol == "--.") { sembol = "G" ; return ; }
    if (sembol == "....") { sembol = "H" ; return ; }
    if (sembol == "..") { sembol = "I" ; return ; }
    if (sembol == ".---") { sembol = "J" ; return ; }
    if (sembol == "-.-") { sembol = "K" ; return ; }
    if (sembol == ".-..") { sembol = "L" ; return ; }
    if (sembol == "--") { sembol = "M" ; return ; }
    if (sembol == "-.") { sembol = "N" ; return ; }
    if (sembol == "---") { sembol = "O" ; return ; }
    if (sembol == ".--.") { sembol = "P" ; return ; }
    if (sembol == "--.-") { sembol = "Q" ; return ; }
    if (sembol == ".-.") { sembol = "R" ; return ; }
    if (sembol == "...") { sembol = "S" ; return ; }
    if (sembol == "-") { sembol = "T" ; return ; }
    if (sembol == "..-") { sembol = "U" ; return ; }
    if (sembol == "...-") { sembol = "V" ; return ; }
    if (sembol == ".--") { sembol = "W" ; return ; }
    if (sembol == "-..-") { sembol = "X" ; return ; }
    if (sembol == "-.--") { sembol = "Y" ; return ; }
    if (sembol == "--..") { sembol = "Z" ; return ; }
    }


     Ardunio ile lazerle(ışıkda olabilir) veri iletimi Ardunio ile lazerle(ışıkda olabilir) veri iletimi Ardunio ile lazerle(ışıkda olabilir) veri iletimi

    ıyıye benzıyor ılk fırsatta deneyeceım

    ama mors alfabesı bıraz karısık




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.