라즈베리파이3 에 1602 LCD 달고 nodejs 컨트롤 하기

Posted by Everyharu
2016. 8. 26. 15:09 IT/Raspberry pi

워낙에 많이 팔린 라즈베리파이 이기에 정보를 구하기는 쉬운편이지만
특정 모듈과 함께 정리된 정보를 구하기는 국내에서는 쉽지 않은것 같다.

특히 nodejs 가 아직 국내에서 많이 사용되는 편이 아니라 그런가?
내가 nodejs에 빠져있어서 그런지는 모르겠지만 아무튼 나는 node 로 한다!!


처음에는 Fnd로 4개짜리로 시계를 만들었었는데 사진을 안찍었어서 패스.



만들어진 모습이다. Aonetech 는 아버지 회사명이라 저렇게 써봤다.
아 브레드보드 아래쪽에 아두이노가 달려있는데 저건 전혀 연결되어있지 않다.


그럼 엉망이지만 내가 그린 회로도를 보도록하자.



연결은 이와같이 되어있다. 저항은 5K 이다. 다른 사이트나 동영상을 보면 저항을 안달고 하는 경우가 많은데
그렇게 해보니 문제가 생기더라. 때문에 저항을 달도록한다. 물론 위의 사진의 경우에는 10K 짜리 두개를 병렬로 연결했다. 5K짜리가 없어서....
(몇몇곳에서는 가변저항을 달긴하더라..근데 내가 가지고 있는 가변저항이 없어서 그냥..아무래도 lcd마다 좀 달아야 할 저항이 다른가보다)

정확히 얼마의 저항이 필요한지는 잘 모르겠으나 내가 만들 수 있던 저항중 5K 가 제일 알맞았다.

10K 를 쓰게 되면 데이터가 자주 깨졌고

200 을 쓰니 아예 다 켜져있는거같은 모양세가 나왔다.

아무튼 문제가 많았다는 이야기이다.

결론은 5K가 제일 적당했다.




노드모듈중에 사용하는 모듈은 lcd 모듈 하나이다.

npm install lcd --save

를 해주던가 아니면 pakage.json 에 dependencies 에 "lcd":"1.1.4" 를 추가해 준 다음에 npm install 을 하도록 하자.

본격적으로 코드는 다음과 같다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
var Lcd = require('lcd'),
    lcd = new Lcd({rs: 26, e: 19, data: [136511], cols: 16, rows: 2});
 
Date.prototype.format = function(f) {
    if (!this.valueOf()) return " ";
    var weekName = ["Sun""Mon""Tue""Wed""Thu""Fri""Sat"];
    var d = this;
     
    return f.replace(/(yyyy|yy|MM|dd|E|hh|mm|ss|a\/p)/gi, function($1) {
        switch ($1) {
            case "yyyy"return d.getFullYear();
            case "yy"return (d.getFullYear() % 1000).zf(2);
            case "MM"return (d.getMonth() + 1).zf(2);
            case "dd"return d.getDate().zf(2);
            case "E"return weekName[d.getDay()];
            case "HH"return d.getHours().zf(2);
            case "hh"return ((h = d.getHours() % 12) ? h : 12).zf(2);
            case "mm"return d.getMinutes().zf(2);
            case "ss"return d.getSeconds().zf(2);
            case "a/p"return d.getHours() < 12 ? "AM" : "PM";
            defaultreturn $1;
        }
    });
};
String.prototype.string = function(len){var s = '', i = 0while (i++ < len) { s += this; } return s;};
String.prototype.zf = function(len){return "0".string(len - this.length+ this;};
Number.prototype.zf = function(len){return this.toString().zf(len);};
 
lcd.on('ready'function () {
    setInterval(function () {
        var d = new Date();
        lcd.setCursor(00);                         // col 0, row 0  
        lcd.print(d.format("MM/dd HH:mm:ss"));
    
        lcd.once('printed'function () {  
            lcd.setCursor(01);                         // col 0, row 1
            lcd.print("Aonetech Develop");
        });
    
    }, 1000);  
});
cs


이렇게 넣고 실행시키면 끝!


도움이 되었다면 아래의 광고를 한번씩 눌러주는 미덕을 보이면 힘이나서 더더 열심히 포스팅할거같다.

끄읕~