| 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 | |
| 203 | byte enabled = 255; |
| 204 | |
| 205 | void SPI_disable() { |
| 206 | if (enabled != 255) { |
| 207 | digitalWrite(enabled, HIGH); |
| 208 | enabled = 255; |
| 209 | } |
| 210 | } |
| 211 | |
| 212 | void SPI_enable(byte slaveselecter) { |
| 213 | SPI_disable(); |
| 214 | digitalWrite(slaveselecter, LOW); |
| 215 | enabled = slaveselecter; |
| 216 | } |
| 217 | |
| 218 | byte SPI_read(){ |
| 219 | return SPI.transfer(0x00); |
| 220 | } |
| 221 | |
| 222 | void 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 | |
| 242 | void 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 | }}} |