Changes between Version 2 and Version 3 of MAX6675Sketch


Ignore:
Timestamp:
Dec 17, 2011 2:32:13 AM (12 years ago)
Author:
maris
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MAX6675Sketch

    v2 v3  
    3535
    3636SLAVEの定義は、SPIで言うところのスレーブセレクトにデジタルの何番を使うかを決めています。
     37
     382011/12/17 追記
     39Arduino IDE付属のSPIライブラリ対応版をMAX6675_10.zipとしてアップロードしました。
     40Arduino 1.0で動作を確認していますが、Arduino 0021あたり以降でも使えると思います。
     41
    3742
    3843== 手っ取り早くない方法 ==
     
    186191#endif //__SPI_H__
    187192}}}
     193
     194=== MAX6675.pde (Arduino 付属SPIライブラリ対応版)===
     195
     196{{{
     197#include "SPI.h"
     198
     199#define VCC  8
     200#define GND  9
     201#define SLAVE  10
     202
     203byte enabled = 255;
     204
     205void SPI_disable() {
     206  if (enabled != 255) {
     207    digitalWrite(enabled, HIGH);
     208    enabled = 255;
     209  }
     210}
     211
     212void SPI_enable(byte slaveselecter) {
     213  SPI_disable();
     214  digitalWrite(slaveselecter, LOW);
     215  enabled = slaveselecter;
     216}
     217
     218byte SPI_read(){
     219   return SPI.transfer(0x00);
     220}
     221
     222void setup() {
     223#ifdef GND
     224  pinMode(GND, OUTPUT);
     225  digitalWrite(GND, LOW);
     226#endif
     227#ifdef VCC
     228  pinMode(VCC, OUTPUT);
     229  digitalWrite(VCC, HIGH);
     230#endif
     231  pinMode(SLAVE, OUTPUT);
     232  digitalWrite(SLAVE, HIGH);
     233
     234  Serial.begin(9600);
     235//  SPI_Master.begin(SLAVE);
     236  SPI.begin();
     237  SPI.setBitOrder(MSBFIRST);
     238  SPI.setClockDivider(SPI_CLOCK_DIV4);
     239  SPI.setDataMode(SPI_MODE0);
     240}
     241
     242void loop() {
     243  int value;
     244
     245  delay(500);
     246  SPI_enable(SLAVE);        //  SPI_Master.enable(SLAVE);
     247  value = SPI_read() << 8;  //  value = SPI_Master.read() << 8;
     248  value |= SPI_read();      //  value |= SPI_Master.read();
     249  SPI_disable();            //  SPI_Master.disable();
     250 
     251  if ((value & 0x0004) != 0){
     252    Serial.println("Error");
     253  } else {
     254    Serial.println((value >> 3) * 0.25);
     255  }
     256}
     257}}}