User Tools

Site Tools


workshop:통신

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
workshop:통신 [2012/08/13 14:06] dongheeworkshop:통신 [2018/07/18 14:10] (current) – external edit 127.0.0.1
Line 1: Line 1:
 IC와 통신 하기  IC와 통신 하기 
  
- 1. [[/UART]] +[[/UART]] 
- 2. [[/I2C]] +* [[/OneWire]] 
 +[[/I2C]] 
 +* [[/SPI]]
  
 칩간에 통신을 실험해보자! 칩간에 통신을 실험해보자!
- 
-====== WS2801 ====== 
- 
-LED 드라이버 
- 
-회로도 
-{{http://i.imgur.com/v1Tol.png?300}} 
- 
-Time 
- 
-{{http://i.imgur.com/zG6jm.png?400}} 
- 
-{{{ 
-int SDI = 11; // PIN 11 
-int CKI = 12; // PIN 12 
-int ledPin = 13; // LED 
- 
-void setup() { 
-  pinMode(SDI, OUTPUT); 
-  pinMode(CKI, OUTPUT); 
-  pinMode(ledPin, OUTPUT); 
-   
-  //Serial.begin(9600); 
-  //Serial.println("Hello!"); 
-} 
- 
-void loop() { 
-  delay(2000); 
- 
-  while(1){  
-    post_frame(0xFF0000); //현재 칼라를 WS2801에 적용한다. 
- 
-    // CLK pin keeps low more than 500uS will make the WS2801 internal status register reset 
-    digitalWrite(CKI, LOW); 
-    delayMicroseconds(500); 
-     
-    digitalWrite(ledPin, HIGH);     
-    delay(250);                   
-    digitalWrite(ledPin, LOW);    
-    delay(250);                   
-  } 
-} 
- 
-// this_led_color값의 비트를 ws2801에 CKI에 맞추어 SDI를 밀어 넣는다. 
-void post_frame (long this_led_color) { 
-  for(byte color_bit = 23 ; color_bit != 255 ; color_bit--) { 
-      //23비트가 처음! 빨간색 (red data MSB) 
-       
-      digitalWrite(CKI, LOW); //클럭이 LOW일때 데이터를 받아 들인다. 
-       
-      long mask = 1L << color_bit; 
-      //The 1'L' forces the 1 to start as a 32 bit number, otherwise it defaults to 16-bit. 
-       
-      if(this_led_color & mask)  
-        digitalWrite(SDI, HIGH); 
-      else 
-        digitalWrite(SDI, LOW); 
-   
-      digitalWrite(CKI, HIGH); //클럭이 HIGH일때 데이터를 적용(latch) 한다. 
-  } 
-} 
-}}} 
- 
-여러개 보낼경우. 이어서 보낸다. 
- 
-{{{ 
-post_frame(0xFF0000); //첫번째 프레임 
-post_frame(0x00FF00); //두번째 프레임 
-// CLK pin keeps low more than 500uS will make the WS2801 internal status register reset 
-digitalWrite(CKI, LOW); 
-delayMicroseconds(500); 
-   
-}}} 
  
workshop/통신.1344866765.txt.gz · Last modified: 2018/07/18 14:09 (external edit)