/*Controllo del potenziometro digitale MCP4132-103 con NodeMCU
     
 Collegamenti:
NodeMCU             MCP4132
 D8 (CS)    ---->   1 (CS)
 D7 (MOSI)  ---->   3 (DI)
 D5 (SCK)   ---->   2 (CLK)
 3,3V       ---->   8 (VCC) 
 GND        ---->   4 (GND)
 
 */


#include <SPI.h>   

#define MCP_PIN 15      // Chip Select MCP4132:  GPIO15 (NodeMCU D8)

int potVal = B00000001;  // valore iniziale Rmim=80R, per evitare overshoot accensione



void setup() {


   Serial.begin(112500);

   pinMode(MCP_PIN, OUTPUT);
   digitalWrite(MCP_PIN,HIGH);

 
   SPI.begin();   
   SPI.setFrequency(1000000);
   
   digitalWrite(MCP_PIN, LOW);
   SPI.transfer(B00000000); // Comando Write
   SPI.transfer(potVal); // imposta valore iniziale 
   digitalWrite(MCP_PIN, HIGH);
   delay(50);
  

  Serial.println("\nProgram is starting...");
  Serial.println("Set pot value");
}

void loop() {
  int preVal = potVal;

  if (Serial.available())
  {
    int buf = Serial.parseInt();
    if (buf != 0) potVal = buf;
    // delay(200);
  }

  if (potVal >= 127) potVal = 127;
  
  if (preVal != potVal)
  {

    Serial.print("Pot value -> ");
    Serial.println(potVal);
    
    digitalWrite(MCP_PIN, LOW);
    SPI.transfer(B00000000); // Comando Write
    SPI.transfer(potVal); // nuovo valore potenziometro
    digitalWrite(MCP_PIN, HIGH);
    
  }
 

delay(10);

}
