Your code is not very long, but I already see a few things that I would change.
int analogPin = 0;
[...]
pinMode(A4, INPUT);
These usages of pins are inconsistent. I personally prefer settings at the beginning of the file, so I'd expect
int analogPin = 0;
int whateverPin = A4; // I don't have a good name yet
While you have
pinMode(A4, INPUT);
there's no
pinMode(analogPin, INPUT);
The main loop is doing 2 things: a) show temperature reading and b) show the component specs. This would be more obvious if written like this:
void loop() {
input = analogRead(A4); //analogRead function is used to receive analog data
volt = (input * 5.0) / 1024.0; //formula using for perform action
showTemperatureReadings();
showComponentReadings();
}
Now, that looks a bit strange, don't you think? What about the stuff before these two big show...() methods? These two lines clearly belong into showComponentReadings().
Now, a lot of variables are declared outside of methods. This makes them global variables. It's possible to change them from anywhere in the code. When the project grows, side effects are evil. Let's remove as many of them as possible.
You can get rid of:
int input = 0;
float volt = 0;
float buffer = 0;
float R2 = 0;
float Vout = 0;
int raw = 0;
After this change, I think the setup() method could be more concise. A lot of stuff just deals with the temperature sensor. I would extract a method as well.
The error messages like
Device did not acknowledge! Freezing.
could not mean very much to the user. A message like
Temperature sensor did not acknowledge! Check the wiring and press the reset button to retry.
could give more meaningful instructions.
The final code with these suggestions applied:
#include <SparkFun_MCP9600.h>
MCP9600 tempSensor;
int analogPin = 0;
int whateverPin = A4;
float R1 = 220;
int Vin = 5;
void setupTemperatureSensor() {
tempSensor.begin();
if (tempSensor.isConnected()) {
Serial.println("Temperature sensor acknowledged.");
}
else {
Serial.println("Temperature sensor did not acknowledge! Check the wiring and press the reset button to retry.");
while (1); //hang forever
}
if (tempSensor.checkDeviceID()) {
Serial.println("Temperature sensor ID is correct.");
}
else {
Serial.println("The temperature sensor ID does not have the expected value. Do you use a different sensor type? Use a SparkFun MCP9600.");
while (1);
}
}
void setup() {
Serial.begin(115200);
Wire.begin();
Wire.setClock(100000);
setupTemperatureSensor();
pinMode(whateverPin, INPUT);
pinMode(analogPin, INPUT);
}
void showTemperatureReadings() {
if (tempSensor.available()) {
Serial.print("Thermocouple: ");
Serial.print(tempSensor.getThermocoupleTemp());
Serial.print(" °C Ambient: ");
Serial.print(tempSensor.getAmbientTemp());
Serial.print(" °C Temperature Delta: ");
Serial.print(tempSensor.getTempDelta());
Serial.print(" °C");
Serial.println();
}
}
void showComponentReadings() {
int input = analogRead(whateverPin); //analogRead function is used to receive analog data
float volt = (input * 5.0) / 1024.0; //formula using for perform action
int raw = analogRead(analogPin);
if (raw)
{
float buffer = raw * Vin;
float Vout = (buffer) / 1024.0;
buffer = (Vin / Vout) - 1;
float R2 = R1 * buffer;
Serial.print("Vout: ");
Serial.println(Vout);
Serial.print("R2: ");
Serial.println(R2);
Serial.print("voltage is:");
Serial.println(volt);
Serial.print("current is:");
Serial.println(volt / R2);
delay(1000);
}
}
void loop() {
showTemperatureReadings();
showComponentReadings();
}
With code folding active, I'd say it's now very simple to get an overview of what the code is doing and what can be configured:

Edit:
After you linked to the schematics, I would
- rename
whateverPin to voltageDividerPin.
- change the calculation
float volt = (input * 5.0) / 1024.0; to a mapping, because it maps the 1024 input values to 5V, so float volt = map(voltageReading, 0, 1024, 0, Vin);
- remove
analogPin completely, because it's not used in the original code as well.
I also hope that read the article and you understood the consequences of using a 220 Ohm resistor.