Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Gravado num Arduino Pro Mini
- // spi to i2c - lado slave
- // www.copacabana.io
- // work in progress. Editarei esse pastebin atualizando as funções
- //-----------------preparacao do sensor tipo K SPI
- #include "max6675.h"
- int ktcSO = 12;
- int ktcCS = 10;
- int ktcCLK = 13;
- MAX6675 ktc(ktcCLK, ktcCS, ktcSO);
- //_________________________________________________
- #include <Wire.h>
- #include <SPI.h> // made no diference!
- #define XSensorPin A1
- #define YSensorPin A2
- const byte SlaveDeviceId = 1;
- byte LastMasterCommand = 0;
- int temperatura; // é float, mas só quero ler inteiro (1 byte)
- void softReset() { asm volatile (" jmp 0"); }
- void pisca(){
- digitalWrite(13,HIGH);
- delay(50);
- digitalWrite(13,LOW);
- }
- void setup(){
- pinMode(13,OUTPUT);
- Serial.begin(9600);
- Serial.println("boot");
- Wire.begin(SlaveDeviceId); // join i2c bus with Slave ID
- Wire.onReceive(receiveCommand); // register talk event
- Wire.onRequest(slavesRespond); // register callback event
- pinMode(XSensorPin, INPUT);
- pinMode(YSensorPin, INPUT);
- }
- void lerSPI(){
- temperatura = 0;
- // basic readout test over SPI
- Serial.print("Leitura local (slave) Deg C = ");
- temperatura = (int) (ktc.readCelsius());
- Serial.println(temperatura);
- delay(500);
- }
- void loop(){
- delay(100);
- }
- void receiveCommand(int howMany){
- LastMasterCommand = Wire.read(); // 1 byte (maximum 256 commands)
- }
- void slavesRespond(){
- int returnValue = 0;
- switch(LastMasterCommand){
- case 0: // No new command was received
- Wire.write("NA");
- delay(100);
- break;
- case 1: // Return X sensor value
- returnValue = GetXSensorValue();
- // softReset();
- delay(100);
- break;
- case 2: // Return Y sensor value
- returnValue = GetYSensorValue();
- delay(100);
- break;
- }
- byte buffer[2]; // split int value into two bytes buffer
- buffer[0] = returnValue >> 8;
- buffer[1] = returnValue & 255;
- Wire.write(buffer, 2); // return response to last command
- LastMasterCommand = 0; // null last Master's command
- }
- int GetXSensorValue(){
- int val = (int) (ktc.readCelsius()); //analogRead(XSensorPin);
- Serial.print(val);
- Serial.println(" leitura local");
- Serial.println(ktc.readCelsius());
- return val;
- }
- int GetYSensorValue(){
- int val = analogRead(YSensorPin);
- return val;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement