1+ #include < SPI.h>
2+
3+ const int SS_PIN = 10 ; // Slave Select pin
4+
5+ void setup () {
6+ Serial.begin (115200 );
7+ pinMode (SS_PIN, OUTPUT);
8+ digitalWrite (SS_PIN, HIGH); // Ensure SS stays high for now
9+
10+ SPI.begin (); // Initialize SPI
11+ SPI.setClockDivider (SPI_CLOCK_DIV128); // Set SPI clock to 1/8th of the system clock
12+ SPI.setDataMode (SPI_MODE0); // Set SPI mode to 0
13+ SPI.setBitOrder (MSBFIRST); // Set bit order to MSB first
14+ }
15+
16+ void loop () {
17+ digitalWrite (SS_PIN, LOW); // Enable slave
18+ delay (10 ); // Small delay to ensure slave is ready
19+
20+ float voltage_LiPo = 3.0 ;
21+ float voltage_NiMh = 5.0 ;
22+
23+ // Request data from the slave
24+ SPI.transfer (0x01 ); // Send a dummy byte to initiate the transfer
25+ SPI.transfer ((byte*)&voltage_LiPo, sizeof (voltage_LiPo));
26+ SPI.transfer ((byte*)&voltage_NiMh, sizeof (voltage_NiMh));
27+
28+ digitalWrite (SS_PIN, HIGH); // Disable slave
29+
30+ // Print the received voltages
31+ Serial.print (" Voltage LiPo: " );
32+ Serial.print (voltage_LiPo);
33+ Serial.print (" V, Voltage NiMh: " );
34+ Serial.println (voltage_NiMh);
35+
36+ delay (1 ); // Wait for a second before the next request
37+ }
0 commit comments