יום שבת, 3 במרץ 2012

פרויקט שביזות חמשו"ש

טוב.. אחריי זמן מה שהייתי עסוק... (אתם יכולים לנחש לפי הכותרת במה..  משום מה אמרו לי שאסור לי לכתוב את זה..) החלטתי לנצל את החמשו"ש הראשון שלי לבנות משהו מועיל (בניגוד לשאר הדברים שעבדתי עליהם עד כה בזמני הפנוי שגם הם יתפרסמו מתישהו..)

בכל אופן, המתנתי די הרבה זמן כדי להשתמש בחיישן מרחק החדש שקניתי קצת לפני הגיוס שלי, ומה יותר כיף מלבנות מערכת רוורס. המערכת שבניתי מכילה תצוגת TFT 1.8 וחיווי לדים (בצורת רמזור מגניב כזה..)


המערכת בבסיסה דיי פשוטה, החיישן מודד מרחק מאובייקט, ה-LCD רושם את המרחק, והלדים מתריאים על פי המרחק מהחיישן.

הצעות לשיפור:
  • צריך לתקן את ההבהוב של המסך (כל פעם שיש ערך חדש מופיע הבהוב קטן, זה באמת לא קשה לפתור את זה אבל אין לי כוח לזה כרגע..)
  • לעבור משלב הprototype ואשכרה להלחים דברים וזה..
הערות:
  • תודה לזאב רוטשטיין (לא לפרופסור, אחד אחר..) על התרומה של הפונקציה i2s ששברתי עליה את הראש לא מעט זמן..
  • חשבתי להוסיף רמקול קטן שמצפצף מתי שהמרחק קטן ואז גיליתי שהצלילי שלו ממש מעצבן אז וויתרתי..

סרטון של העסק עובד...


זהו לפוסט זה.. אני אשתדל להוסיף סרטון של העסק עובד (כרגע אין לי כל כך תנאים לצלם). אני מקווה שאני באמת אוכל לכתוב עוד בתקופה הקרובה אך לא יודע בעצמי כרגע...

להלן הקוד:


#include <Ultrasonic.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>

#define cs 6
#define sclk 7
#define mosi 8
#define dc 9
#define rst 10

// Color definitions
#define   BLACK           0x0000
#define   BLUE            0x001F
#define   RED             0xF800
#define   GREEN           0x07E0
#define CYAN            0x07FF
#define MAGENTA         0xF81F
#define YELLOW          0xFFE0  
#define WHITE           0xFFFF


//Ultrasonic sensor, pin definition
#define TRIGGER_PIN  52
#define ECHO_PIN     53

int led1 = 22;
int led2 = 24;
int led3 = 26;
int led4 = 28;
int led5 = 30;

Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);
Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, mosi, sclk, rst);  
  
  
    void i2s(int n, char*s, int l){
  s[l] = 0;
  for (int i = l-1; i >= 0; i--){
    s[i] = n % 10 + 0x30;
    n /= 10;
  }
}
  
  
void setup()
  {
  Serial.begin(9600);
  pinMode(led1, OUTPUT); 
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  tft.initR(); // initialize a ST7735R chip
  tft.writecommand(ST7735_DISPON);
  uint16_t time = millis();
  tft.fillScreen(BLACK);
  time = millis() - time;
  tft.drawString (0, 10, "---- System Data ---- ", RED);
  tft.drawString (0, 30, "Distance: ", GREEN);
  }

void loop()
  {
  float cm = 0;
  float  microsec = ultrasonic.timing();
  float  cmMsec =  ultrasonic.convert(microsec, Ultrasonic::CM);
  float   inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);
  cm = float(cmMsec);
  
char c[3] ;
i2s(int(cm), c, 2);
  
 tft.drawString (80, 30, c, GREEN);
  
       if (cmMsec < 60){
        digitalWrite(led1, LOW);
       digitalWrite(led2, LOW);
       digitalWrite(led3, LOW);
       digitalWrite(led4, LOW);
       digitalWrite(led5, LOW);  
     }
     if (cmMsec < 50){
      
       digitalWrite(led1, HIGH);
       digitalWrite(led2, LOW);
       digitalWrite(led3, LOW);
       digitalWrite(led4, LOW);
       digitalWrite(led5, LOW);  
     }
  
       if (cmMsec < 40){  
        digitalWrite(led1, HIGH);
       digitalWrite(led2, HIGH);
       digitalWrite(led3, LOW);
       digitalWrite(led4, LOW);
       digitalWrite(led5, LOW);

       
     }
     
       if (cmMsec < 30){
        digitalWrite(led1, HIGH);
       digitalWrite(led2, HIGH);
       digitalWrite(led3, HIGH);
       digitalWrite(led4, LOW);
       digitalWrite(led5, LOW);

       
     }
          if (cmMsec < 20){
       digitalWrite(led1, HIGH);
       digitalWrite(led2, HIGH);
       digitalWrite(led3, HIGH);
       digitalWrite(led4, HIGH);
       digitalWrite(led5, LOW);
     }
        if (cmMsec < 10){
       digitalWrite(led1, HIGH);
       digitalWrite(led2, HIGH);
       digitalWrite(led3, HIGH);
       digitalWrite(led4, HIGH);
       digitalWrite(led5, HIGH);
     }
     
     
    Serial.println(", CM: ");
    Serial.print(cmMsec);
    delay(50);
    tft.drawString (80, 30, c, BLACK);
  }

אין תגובות:

הוסף רשומת תגובה