Moved to:

http://www.killerbug.net

## Archive for June, 2011

If your system is overheating in spite of the fan turning fast, this is one area you should look at. Over time, the heatsink bases and/or the chip tops can warp slightly, causing poor thermal transfer…and without that, it does not matter how fast the fan spins. The system shown is a 40GB model. As you can see, one of the chips is not touching the heatsink except at the very edges, and thus, the temperature is very high even with the fan at maximum speed and the system at an idle. The other chip has better contact, although it isn’t quite perfect, there was enough contact to keep the chip cool.

To fix this, I simply removed both heatsinks and lapped them. This is a process of sanding the base smooth by rubbing it back and forth across a piece of low-grit sandpaper that is placed on a flat surface. Once the low-grit has leveled out the heatsink, you switch to 600 grit to remove the scratches from the low grit, and then you use 1000-2000 grit to put a mirror finish on it. In this particular model, there were raised edges on one of the heatsinks…I used a Dremel Trio to remove those before doing the low-grit sanding (NOTE: this moved the screw stops, so it is almost like doing the washer trick, except without washers). Once both heatsinks were flat and smooth, I put it all back together with cheap white thermal compound, then disassembled to check the contact squares again. While they still were not perfect, they were more than good enough. If they had still been bad, it would have had to sand the chip tops…this is a VERY time consuming process that I am very happy to have avoided. Last, I cleaned off the crummy white stuff and put a super-thin but even layer of Arctic Silver 5 on both chip tops, screwed it all back together, and that was that…

Moved to:

http://www.killerbug.net

Over the past few weeks, I have posted various bits of Arduino sketches for controlling 7-segment displays and reading thermistors. This has all been leading up to this release.

So What is a “Hardware Mod Firmware”? It is a basic sketch that does all the things that most PS3 modders will want to do, while leaving room for other things. It supports from 1-4 thermistors, and you can use 0, 2, 4, 6, or 8 displays to read out the various temperatures. It also transmits the 4 temperatures by serial to a PC or other device with a serial monitor; so you can read all 4 temperatures without any 7-segment displays. Based on the temperatures gathered, the fan speed is set. I intend to refine the process considerably…right now, it is extremely aggressive in trying to maintain a very small heat range…because of this, the fan sounds a bit like a car revving the engine. Smoothing this out is just one of several things on my unofficial “to do” list…but if anyone has any other ideas, feel free to post…you might even think up something that I didn’t.

The sketch is highly configurable; supporting ground and hot controlled displays, and being easily adaptable to different thermistors. The sketch will work fine with any combination of 1-4 thermistors, and 0-8 displays as is; you do not need to modify anything if you are not using sensor(s) or display(s). The minimum number of thermal sensors is 1, but I recommend at least 2…3 for BC units. The 4th sensor is completely useless if you do not have all eight of the 7-segment displays as it does not factor into the fan speed calculations…that is another thing I am thinking of adding.

Unofficial “TO DO” List:

-Incorporate intake temperature into fan speed calculations (?maybe?).

-Smooth out fan curve and try to make it change less suddenly.

-Cut size, leaving more room for other things.

-Move some of the stuff from loop() into dedicated functions; to make writing things in loop() easier.

-A few other things I won’t even mention until I figure out if they are theoretically possible…I know one of them is possible with a Teensy 2.0++; but that is a much better chip than the ATmega328p.

-Add fan speed percentage to the serial report and to one of the displays (probably alternating with intake temperature on the same pair of displays).

// This is a script primarly designed for Sony PS3 mods, but designed to be easily // changable for other applications. // // PS3_HW_MOD_FW_KillerBug_Arduino - Version 0.01a // // By Killer Bug // // // Features: // 1.) Reads 4 thermistors, translates reading to degrees celsius. // -As the script is designed, these are placed as follows: // -Thermistor 0 is attached to CPU heatsink base // -Thermistor 1 is attached to GPU heatsink base // -Thermistor 2 is attached to the northbridge chip, or the emotion engine if equiped. // -Thermistor 3 is placed at the front, in front of the vents, to get room temperature. // // 2.) Displays the 4 thermistor readings on 7-segment displays. // -Displays are setup in four pairs, and controlled by just two Arduino pins. // -This script is designed for ground-controlled displays with ground controlled // decimal points. It can be converted to work with hot-controlled displays with // hot-controlled decimal points. To do this, first make a copy of all the // instructions between the two sets of long ==== lines elsewhere , as the process // will destroy the instructions before you are done doing the steps: // ========================================================== // Search for each of the first halves of // the lines below (without the quotes), and // replace with the second half of the line // (without the quotes) (these must be done // in the order shown): // "gpiotmp |= 1 << 0;" = "gp0" // "gpiotmp |= 1 << 1;" = "gp1" // "gpiotmp |= 1 << 2;" = "gp2" // "gpiotmp |= 1 << 3;" = "gp3" // "gpiotmp |= 1 << 4;" = "gp4" // "gpiotmp |= 1 << 5;" = "gp5" // "gpiotmp |= 1 << 6;" = "gp6" // "gpiotmp |= 1 << 7;" = "gp7" // "gpiotmp &= ~(1 << 0);" = "gpiotmp |= 1 << 0;" // "gpiotmp &= ~(1 << 1);" = "gpiotmp |= 1 << 1;" // "gpiotmp &= ~(1 << 2);" = "gpiotmp |= 1 << 2;" // "gpiotmp &= ~(1 << 3);" = "gpiotmp |= 1 << 3;" // "gpiotmp &= ~(1 << 4);" = "gpiotmp |= 1 << 4;" // "gpiotmp &= ~(1 << 5);" = "gpiotmp |= 1 << 5;" // "gpiotmp &= ~(1 << 6);" = "gpiotmp |= 1 << 6;" // "gpiotmp &= ~(1 << 7);" = "gpiotmp |= 1 << 7;" // "gp0" = "gpiotmp &= ~(1 << 0);" // "gp1" = "gpiotmp &= ~(1 << 1);" // "gp2" = "gpiotmp &= ~(1 << 2);" // "gp3" = "gpiotmp &= ~(1 << 3);" // "gp4" = "gpiotmp &= ~(1 << 4);" // "gp5" = "gpiotmp &= ~(1 << 5);" // "gp6" = "gpiotmp &= ~(1 << 6);" // "gp7" = "gpiotmp &= ~(1 << 7);" // ========================================================== // // Circuits for the thermistors: // // HOT -> 100K Resistor 0 _____ CPU Thermistor -> Ground // | // Arduino A0 // // HOT -> 100K Resistor 1 _____ GPU Thermistor -> Ground // | // Arduino A1 // // HOT -> 100K Resistor 2 _____ Exhaust Thermistor -> Ground // | // Arduino A2 // // HOT -> 100K Resistor 3 _____ Intake Thermistor -> Ground // | // Arduino A3 // // // Pinout for the MCP23008 chips: // // IC | PIN | Connection //---------------------- // All| 1 | Arduino Analog 5 // All| 2 | Arduino Analog 4 // 0 | 3 | GND // 0 | 4 | GND // 0 | 5 | GND // 1 | 3 | GND // 1 | 4 | GND // 1 | 5 | 5V // 2 | 3 | GND // 2 | 4 | 5V // 2 | 5 | GND // 3 | 3 | GND // 3 | 4 | 5V // 3 | 5 | 5V // 4 | 3 | 5V // 4 | 4 | GND // 4 | 5 | GND // 5 | 3 | 5V // 5 | 4 | GND // 5 | 5 | 5V // 6 | 3 | 5V // 6 | 4 | 5V // 6 | 5 | GND // 7 | 3 | 5V // 7 | 4 | 5V // 7 | 5 | 5V // ALL| 6 | 5V // ALL| 9 | GND // ALL| 18 | 5V // // Pins 10-16 of each device drive the 7 segments, as shown here: // // 10 // ________ // | | // 15 | | 11 // | 16 | // |________| // | | // 14 | | 12 // | | // |________| // 13 // // // // This is designed for a specific thermistor, the // Vishay NTCLE100E3104HB0. This is a common and // affordable thermistor, although it is not the // most accurate available. // // If you would like to switch to another // thermistor because this part number is not // available in your country, or because you would // like better accuracy, you will want to find a // part with the same resistance @ temperature // ratings, or else you will have to spend a lot // of time rewriting the main body of the // "getCelsius" command: // // 00C = 340.9 K ohm // 05C = 263.1 K ohm // 10C = 204.4 K ohm // 15C = 160.0 K ohm // 20C = 126.1 K ohm // 25C = 100.0 K ohm // 30C = 79.81 K ohm // 35C = 64.08 K ohm // 40C = 51.75 K ohm // 45C = 42.02 K ohm // 50C = 34.31 K ohm // 55C = 28.16 K ohm // 60C = 23.22 K ohm // 65C = 19.25 K ohm // 70C = 16.02 K ohm // 75C = 13.40 K ohm // 80C = 11.26 K ohm // 85C = 9.496 K ohm // 90C = 8.042 K ohm // 95C = 6.837 K ohm // 100C = 5.835 K ohm // // // The MCP23008 datasheet specifies that the maximum current for // the chip is 125mA. Because of this, the maximum amperage per // segment for a 7-digit display with no decimal point should be // kept at or under 15mA. If you are using a decimal point, the // amperage should be kept at or under 12mA. // #include <Wire.h> #include <avr/pgmspace.h> #include <WProgram.h> int thermPin0 = A0; //Arduino Analog pin 0 = CPU Temp int thermPin1 = A1; //Arduino Analog pin 1 = GPU Temp int thermPin2 = A2; //Arduino Analog pin 2 = Northbridge/EE Temp int thermPin3 = A3; //Arduino Analog pin 3 = Intake Temp int PWMpin = 10; //Sets digital pin 10 as the PWM control for the fan. short maxTempC = 50; //Sets the temperature where the fan goes to full speed. short yyyy; short rawThermTMP000; short rawThermTMP001; short rawThermTMP002; short rawThermTMP003; short rawThermTMP; short cThermTMP; short therm0C; short therm1C; short therm2C; short therm3C; short rawThermTMP00; short rawThermTMP01; short rawThermTMP02; short rawThermTMP03; short rawThermTMP04; short rawThermTMP05; short rawThermTMP06; short rawThermTMP07; short rawThermTMP08; short rawThermTMP09; short rawThermTMP10; short rawThermTMP11; short rawThermTMP12; short rawThermTMP13; short rawThermTMP14; short rawThermTMP15; short rawThermTMP16; short rawThermTMP17; short rawThermTMP18; short rawThermTMP19; short rawThermTMP20; short rawThermTMP21; short rawThermTMP22; short rawThermTMP23; short rawThermTMP24; short rawThermTMP25; short rawThermTMP26; short rawThermTMP27; short cccc; short highestReading; uint8_t gpio000 = 0xFF; //These will always contain the last signal uint8_t gpio001 = 0xFF; //sent to each respective display, or the uint8_t gpio002 = 0xFF; //signal being sent to that display as part uint8_t gpio003 = 0xFF; //of the running command. uint8_t gpio004 = 0xFF; // uint8_t gpio005 = 0xFF; // uint8_t gpio006 = 0xFF; // uint8_t gpio007 = 0xFF; // uint8_t gpiotmp = 0xFF; void setup(){ pinMode(PWMpin, OUTPUT); //sets the PWM Fan Control pin as an output. startUp(0x20); //These startUp(0x21); //start startUp(0x22); //each startUp(0x23); //of startUp(0x24); //the startUp(0x25); //eight startUp(0x26); //digits startUp(0x27); // digitWrite (0, 10); // If you want a digit to start with digitWrite (1, 10); // a certain number, you can change digitWrite (2, 10); // it here. Removing these lines digitWrite (3, 10); // for any chip will make them start digitWrite (4, 10); // with "8". digitWrite (5, 10); // digitWrite (6, 10); // digitWrite (7, 10); // decPointWrite (0, 0); // If you are using a decimal point, decPointWrite (1, 0); // or if you are using that pin for decPointWrite (2, 0); // some other function, and you want decPointWrite (3, 0); // that decimal point or function to decPointWrite (4, 0); // start by default, just remove the decPointWrite (5, 0); // line from here and it will start decPointWrite (6, 0); // by default. decPointWrite (7, 0); // Serial.begin(9600); //Starts the serial communication } void loop(){ getTemps(); if ((therm0C >= therm1C) && (therm0C >= therm2C)) (highestReading = therm0C); if ((therm1C >= therm0C) && (therm1C >= therm2C)) (highestReading = therm1C); if ((therm2C >= therm0C) && (therm2C >= therm1C)) (highestReading = therm2C); if (highestReading >= maxTempC) (analogWrite(PWMpin, 254)); if (highestReading == (maxTempC - 1)) (analogWrite(PWMpin, 234)); if (highestReading == (maxTempC - 2)) (analogWrite(PWMpin, 213)); if (highestReading == (maxTempC - 3)) (analogWrite(PWMpin, 193)); if (highestReading == (maxTempC - 4)) (analogWrite(PWMpin, 172)); if (highestReading == (maxTempC - 5)) (analogWrite(PWMpin, 152)); if (highestReading == (maxTempC - 6)) (analogWrite(PWMpin, 132)); if (highestReading == (maxTempC - 7)) (analogWrite(PWMpin, 111)); if (highestReading == (maxTempC - 8)) (analogWrite(PWMpin, 91)); if (highestReading == (maxTempC - 9)) (analogWrite(PWMpin, 70)); if (highestReading <= (maxTempC - 10)) (analogWrite(PWMpin, 50)); if ((therm0C >= 0) && (therm0C <= 9)){ digitWrite (1, 0); // Write a "0" on chip 1 if (therm0C == 0) (digitWrite (0, 0)); if (therm0C == 1) (digitWrite (0, 1)); if (therm0C == 2) (digitWrite (0, 2)); if (therm0C == 3) (digitWrite (0, 3)); if (therm0C == 4) (digitWrite (0, 4)); if (therm0C == 5) (digitWrite (0, 5)); if (therm0C == 6) (digitWrite (0, 6)); if (therm0C == 7) (digitWrite (0, 7)); if (therm0C == 8) (digitWrite (0, 8)); if (therm0C == 9) (digitWrite (0, 9)); } if ((therm0C >= 10) && (therm0C <= 19)){ digitWrite (1, 1); if (therm0C == 10) (digitWrite (0,0)); if (therm0C == 11) (digitWrite (0,1)); if (therm0C == 12) (digitWrite (0,2)); if (therm0C == 13) (digitWrite (0,3)); if (therm0C == 14) (digitWrite (0,4)); if (therm0C == 15) (digitWrite (0,5)); if (therm0C == 16) (digitWrite (0,6)); if (therm0C == 17) (digitWrite (0,7)); if (therm0C == 18) (digitWrite (0,8)); if (therm0C == 19) (digitWrite (0,9)); } if ((therm0C >= 20) && (therm0C <= 29)){ digitWrite (1, 2); if (therm0C == 20) (digitWrite (0,0)); if (therm0C == 21) (digitWrite (0,1)); if (therm0C == 22) (digitWrite (0,2)); if (therm0C == 23) (digitWrite (0,3)); if (therm0C == 24) (digitWrite (0,4)); if (therm0C == 25) (digitWrite (0,5)); if (therm0C == 26) (digitWrite (0,6)); if (therm0C == 27) (digitWrite (0,7)); if (therm0C == 28) (digitWrite (0,8)); if (therm0C == 29) (digitWrite (0,9)); } if ((therm0C >= 30) && (therm0C <= 39)){ digitWrite (1, 3); if (therm0C == 30) (digitWrite (0,0)); if (therm0C == 31) (digitWrite (0,1)); if (therm0C == 32) (digitWrite (0,2)); if (therm0C == 33) (digitWrite (0,3)); if (therm0C == 34) (digitWrite (0,4)); if (therm0C == 35) (digitWrite (0,5)); if (therm0C == 36) (digitWrite (0,6)); if (therm0C == 37) (digitWrite (0,7)); if (therm0C == 38) (digitWrite (0,8)); if (therm0C == 39) (digitWrite (0,9)); } if ((therm0C >= 40) && (therm0C <= 49)){ digitWrite (1, 4); if (therm0C == 40) (digitWrite (0,0)); if (therm0C == 41) (digitWrite (0,1)); if (therm0C == 42) (digitWrite (0,2)); if (therm0C == 43) (digitWrite (0,3)); if (therm0C == 44) (digitWrite (0,4)); if (therm0C == 45) (digitWrite (0,5)); if (therm0C == 46) (digitWrite (0,6)); if (therm0C == 47) (digitWrite (0,7)); if (therm0C == 48) (digitWrite (0,8)); if (therm0C == 49) (digitWrite (0,9)); } if ((therm0C >= 50) && (therm0C <= 59)){ digitWrite (1, 5); if (therm0C == 50) (digitWrite (0,0)); if (therm0C == 51) (digitWrite (0,1)); if (therm0C == 52) (digitWrite (0,2)); if (therm0C == 53) (digitWrite (0,3)); if (therm0C == 54) (digitWrite (0,4)); if (therm0C == 55) (digitWrite (0,5)); if (therm0C == 56) (digitWrite (0,6)); if (therm0C == 57) (digitWrite (0,7)); if (therm0C == 58) (digitWrite (0,8)); if (therm0C == 59) (digitWrite (0,9)); } if ((therm0C >= 60) && (therm0C <= 69)){ digitWrite (1, 6); if (therm0C == 60) (digitWrite (0,0)); if (therm0C == 61) (digitWrite (0,1)); if (therm0C == 62) (digitWrite (0,2)); if (therm0C == 63) (digitWrite (0,3)); if (therm0C == 64) (digitWrite (0,4)); if (therm0C == 65) (digitWrite (0,5)); if (therm0C == 66) (digitWrite (0,6)); if (therm0C == 67) (digitWrite (0,7)); if (therm0C == 68) (digitWrite (0,8)); if (therm0C == 69) (digitWrite (0,9)); } if ((therm0C >= 70) && (therm0C <= 79)){ digitWrite (1, 7); if (therm0C == 70) (digitWrite (0,0)); if (therm0C == 71) (digitWrite (0,1)); if (therm0C == 72) (digitWrite (0,2)); if (therm0C == 73) (digitWrite (0,3)); if (therm0C == 74) (digitWrite (0,4)); if (therm0C == 75) (digitWrite (0,5)); if (therm0C == 76) (digitWrite (0,6)); if (therm0C == 77) (digitWrite (0,7)); if (therm0C == 78) (digitWrite (0,8)); if (therm0C == 79) (digitWrite (0,9)); } if ((therm0C >= 80) && (therm0C <= 89)){ digitWrite (1, 8); if (therm0C == 80) (digitWrite (0,0)); if (therm0C == 81) (digitWrite (0,1)); if (therm0C == 82) (digitWrite (0,2)); if (therm0C == 83) (digitWrite (0,3)); if (therm0C == 84) (digitWrite (0,4)); if (therm0C == 85) (digitWrite (0,5)); if (therm0C == 86) (digitWrite (0,6)); if (therm0C == 87) (digitWrite (0,7)); if (therm0C == 88) (digitWrite (0,8)); if (therm0C == 89) (digitWrite (0,9)); } if ((therm0C >= 90) && (therm0C <= 99)){ digitWrite (1, 9); if (therm0C == 90) (digitWrite (0,0)); if (therm0C == 91) (digitWrite (0,1)); if (therm0C == 92) (digitWrite (0,2)); if (therm0C == 93) (digitWrite (0,3)); if (therm0C == 94) (digitWrite (0,4)); if (therm0C == 95) (digitWrite (0,5)); if (therm0C == 96) (digitWrite (0,6)); if (therm0C == 97) (digitWrite (0,7)); if (therm0C == 98) (digitWrite (0,8)); if (therm0C == 99) (digitWrite (0,9)); } if ((therm1C >= 0) && (therm1C <= 9)){ digitWrite (3, 0); if (therm1C == 0) (digitWrite (2,0)); if (therm1C == 1) (digitWrite (2,1)); if (therm1C == 2) (digitWrite (2,2)); if (therm1C == 3) (digitWrite (2,3)); if (therm1C == 4) (digitWrite (2,4)); if (therm1C == 5) (digitWrite (2,5)); if (therm1C == 6) (digitWrite (2,6)); if (therm1C == 7) (digitWrite (2,7)); if (therm1C == 8) (digitWrite (2,8)); if (therm1C == 9) (digitWrite (2,9)); } if ((therm1C >= 10) && (therm1C <= 19)){ digitWrite (3, 1); if (therm1C == 10) (digitWrite (2,0)); if (therm1C == 11) (digitWrite (2,1)); if (therm1C == 12) (digitWrite (2,2)); if (therm1C == 13) (digitWrite (2,3)); if (therm1C == 14) (digitWrite (2,4)); if (therm1C == 15) (digitWrite (2,5)); if (therm1C == 16) (digitWrite (2,6)); if (therm1C == 17) (digitWrite (2,7)); if (therm1C == 18) (digitWrite (2,8)); if (therm1C == 19) (digitWrite (2,9)); } if ((therm1C >= 20) && (therm1C <= 29)){ digitWrite (3, 2); if (therm1C == 20) (digitWrite (2,0)); if (therm1C == 21) (digitWrite (2,1)); if (therm1C == 22) (digitWrite (2,2)); if (therm1C == 23) (digitWrite (2,3)); if (therm1C == 24) (digitWrite (2,4)); if (therm1C == 25) (digitWrite (2,5)); if (therm1C == 26) (digitWrite (2,6)); if (therm1C == 27) (digitWrite (2,7)); if (therm1C == 28) (digitWrite (2,8)); if (therm1C == 29) (digitWrite (2,9)); } if ((therm1C >= 30) && (therm1C <= 39)){ digitWrite (3, 3); if (therm1C == 30) (digitWrite (2,0)); if (therm1C == 31) (digitWrite (2,1)); if (therm1C == 32) (digitWrite (2,2)); if (therm1C == 33) (digitWrite (2,3)); if (therm1C == 34) (digitWrite (2,4)); if (therm1C == 35) (digitWrite (2,5)); if (therm1C == 36) (digitWrite (2,6)); if (therm1C == 37) (digitWrite (2,7)); if (therm1C == 38) (digitWrite (2,8)); if (therm1C == 39) (digitWrite (2,9)); } if ((therm1C >= 40) && (therm1C <= 49)){ digitWrite (3, 4); if (therm1C == 40) (digitWrite (2,0)); if (therm1C == 41) (digitWrite (2,1)); if (therm1C == 42) (digitWrite (2,2)); if (therm1C == 43) (digitWrite (2,3)); if (therm1C == 44) (digitWrite (2,4)); if (therm1C == 45) (digitWrite (2,5)); if (therm1C == 46) (digitWrite (2,6)); if (therm1C == 47) (digitWrite (2,7)); if (therm1C == 48) (digitWrite (2,8)); if (therm1C == 49) (digitWrite (2,9)); } if ((therm1C >= 50) && (therm1C <= 59)){ digitWrite (3, 5); if (therm1C == 50) (digitWrite (2,0)); if (therm1C == 51) (digitWrite (2,1)); if (therm1C == 52) (digitWrite (2,2)); if (therm1C == 53) (digitWrite (2,3)); if (therm1C == 54) (digitWrite (2,4)); if (therm1C == 55) (digitWrite (2,5)); if (therm1C == 56) (digitWrite (2,6)); if (therm1C == 57) (digitWrite (2,7)); if (therm1C == 58) (digitWrite (2,8)); if (therm1C == 59) (digitWrite (2,9)); } if ((therm1C >= 60) && (therm1C <= 69)){ digitWrite (3, 6); if (therm1C == 60) (digitWrite (2,0)); if (therm1C == 61) (digitWrite (2,1)); if (therm1C == 62) (digitWrite (2,2)); if (therm1C == 63) (digitWrite (2,3)); if (therm1C == 64) (digitWrite (2,4)); if (therm1C == 65) (digitWrite (2,5)); if (therm1C == 66) (digitWrite (2,6)); if (therm1C == 67) (digitWrite (2,7)); if (therm1C == 68) (digitWrite (2,8)); if (therm1C == 69) (digitWrite (2,9)); } if ((therm1C >= 70) && (therm1C <= 79)){ digitWrite (3, 7); if (therm1C == 70) (digitWrite (2,0)); if (therm1C == 71) (digitWrite (2,1)); if (therm1C == 72) (digitWrite (2,2)); if (therm1C == 73) (digitWrite (2,3)); if (therm1C == 74) (digitWrite (2,4)); if (therm1C == 75) (digitWrite (2,5)); if (therm1C == 76) (digitWrite (2,6)); if (therm1C == 77) (digitWrite (2,7)); if (therm1C == 78) (digitWrite (2,8)); if (therm1C == 79) (digitWrite (2,9)); } if ((therm1C >= 80) && (therm1C <= 89)){ digitWrite (3, 8); if (therm1C == 80) (digitWrite (2,0)); if (therm1C == 81) (digitWrite (2,1)); if (therm1C == 82) (digitWrite (2,2)); if (therm1C == 83) (digitWrite (2,3)); if (therm1C == 84) (digitWrite (2,4)); if (therm1C == 85) (digitWrite (2,5)); if (therm1C == 86) (digitWrite (2,6)); if (therm1C == 87) (digitWrite (2,7)); if (therm1C == 88) (digitWrite (2,8)); if (therm1C == 89) (digitWrite (2,9)); } if ((therm1C >= 90) && (therm1C <= 99)){ digitWrite (3, 9); if (therm1C == 90) (digitWrite (2,0)); if (therm1C == 91) (digitWrite (2,1)); if (therm1C == 92) (digitWrite (2,2)); if (therm1C == 93) (digitWrite (2,3)); if (therm1C == 94) (digitWrite (2,4)); if (therm1C == 95) (digitWrite (2,5)); if (therm1C == 96) (digitWrite (2,6)); if (therm1C == 97) (digitWrite (2,7)); if (therm1C == 98) (digitWrite (2,8)); if (therm1C == 99) (digitWrite (2,9)); } if ((therm2C >= 0) && (therm2C <= 9)){ digitWrite (5, 0); if (therm2C == 0) (digitWrite (4,0)); if (therm2C == 1) (digitWrite (4,1)); if (therm2C == 2) (digitWrite (4,2)); if (therm2C == 3) (digitWrite (4,3)); if (therm2C == 4) (digitWrite (4,4)); if (therm2C == 5) (digitWrite (4,5)); if (therm2C == 6) (digitWrite (4,6)); if (therm2C == 7) (digitWrite (4,7)); if (therm2C == 8) (digitWrite (4,8)); if (therm2C == 9) (digitWrite (4,9)); } if ((therm2C >= 10) && (therm2C <= 19)){ digitWrite (5, 1); if (therm2C == 10) (digitWrite (4,0)); if (therm2C == 11) (digitWrite (4,1)); if (therm2C == 12) (digitWrite (4,2)); if (therm2C == 13) (digitWrite (4,3)); if (therm2C == 14) (digitWrite (4,4)); if (therm2C == 15) (digitWrite (4,5)); if (therm2C == 16) (digitWrite (4,6)); if (therm2C == 17) (digitWrite (4,7)); if (therm2C == 18) (digitWrite (4,8)); if (therm2C == 19) (digitWrite (4,9)); } if ((therm2C >= 20) && (therm2C <= 29)){ digitWrite (5, 2); if (therm2C == 20) (digitWrite (4,0)); if (therm2C == 21) (digitWrite (4,1)); if (therm2C == 22) (digitWrite (4,2)); if (therm2C == 23) (digitWrite (4,3)); if (therm2C == 24) (digitWrite (4,4)); if (therm2C == 25) (digitWrite (4,5)); if (therm2C == 26) (digitWrite (4,6)); if (therm2C == 27) (digitWrite (4,7)); if (therm2C == 28) (digitWrite (4,8)); if (therm2C == 29) (digitWrite (4,9)); } if ((therm2C >= 30) && (therm2C <= 39)){ digitWrite (5, 3); if (therm2C == 30) (digitWrite (4,0)); if (therm2C == 31) (digitWrite (4,1)); if (therm2C == 32) (digitWrite (4,2)); if (therm2C == 33) (digitWrite (4,3)); if (therm2C == 34) (digitWrite (4,4)); if (therm2C == 35) (digitWrite (4,5)); if (therm2C == 36) (digitWrite (4,6)); if (therm2C == 37) (digitWrite (4,7)); if (therm2C == 38) (digitWrite (4,8)); if (therm2C == 39) (digitWrite (4,9)); } if ((therm2C >= 40) && (therm2C <= 49)){ digitWrite (5, 4); if (therm2C == 40) (digitWrite (4,0)); if (therm2C == 41) (digitWrite (4,1)); if (therm2C == 42) (digitWrite (4,2)); if (therm2C == 43) (digitWrite (4,3)); if (therm2C == 44) (digitWrite (4,4)); if (therm2C == 45) (digitWrite (4,5)); if (therm2C == 46) (digitWrite (4,6)); if (therm2C == 47) (digitWrite (4,7)); if (therm2C == 48) (digitWrite (4,8)); if (therm2C == 49) (digitWrite (4,9)); } if ((therm2C >= 50) && (therm2C <= 59)){ digitWrite (5, 5); if (therm2C == 50) (digitWrite (4,0)); if (therm2C == 51) (digitWrite (4,1)); if (therm2C == 52) (digitWrite (4,2)); if (therm2C == 53) (digitWrite (4,3)); if (therm2C == 54) (digitWrite (4,4)); if (therm2C == 55) (digitWrite (4,5)); if (therm2C == 56) (digitWrite (4,6)); if (therm2C == 57) (digitWrite (4,7)); if (therm2C == 58) (digitWrite (4,8)); if (therm2C == 59) (digitWrite (4,9)); } if ((therm2C >= 60) && (therm2C <= 69)){ digitWrite (5, 6); if (therm2C == 60) (digitWrite (4,0)); if (therm2C == 61) (digitWrite (4,1)); if (therm2C == 62) (digitWrite (4,2)); if (therm2C == 63) (digitWrite (4,3)); if (therm2C == 64) (digitWrite (4,4)); if (therm2C == 65) (digitWrite (4,5)); if (therm2C == 66) (digitWrite (4,6)); if (therm2C == 67) (digitWrite (4,7)); if (therm2C == 68) (digitWrite (4,8)); if (therm2C == 69) (digitWrite (4,9)); } if ((therm2C >= 70) && (therm2C <= 79)){ digitWrite (5, 7); if (therm2C == 70) (digitWrite (4,0)); if (therm2C == 71) (digitWrite (4,1)); if (therm2C == 72) (digitWrite (4,2)); if (therm2C == 73) (digitWrite (4,3)); if (therm2C == 74) (digitWrite (4,4)); if (therm2C == 75) (digitWrite (4,5)); if (therm2C == 76) (digitWrite (4,6)); if (therm2C == 77) (digitWrite (4,7)); if (therm2C == 78) (digitWrite (4,8)); if (therm2C == 79) (digitWrite (4,9)); } if ((therm2C >= 80) && (therm2C <= 89)){ digitWrite (5, 8); if (therm2C == 80) (digitWrite (4,0)); if (therm2C == 81) (digitWrite (4,1)); if (therm2C == 82) (digitWrite (4,2)); if (therm2C == 83) (digitWrite (4,3)); if (therm2C == 84) (digitWrite (4,4)); if (therm2C == 85) (digitWrite (4,5)); if (therm2C == 86) (digitWrite (4,6)); if (therm2C == 87) (digitWrite (4,7)); if (therm2C == 88) (digitWrite (4,8)); if (therm2C == 89) (digitWrite (4,9)); } if ((therm2C >= 90) && (therm2C <= 99)){ digitWrite (5, 9); if (therm2C == 90) (digitWrite (4,0)); if (therm2C == 91) (digitWrite (4,1)); if (therm2C == 92) (digitWrite (4,2)); if (therm2C == 93) (digitWrite (4,3)); if (therm2C == 94) (digitWrite (4,4)); if (therm2C == 95) (digitWrite (4,5)); if (therm2C == 96) (digitWrite (4,6)); if (therm2C == 97) (digitWrite (4,7)); if (therm2C == 98) (digitWrite (4,8)); if (therm2C == 99) (digitWrite (4,9)); } if ((therm3C >= 0) && (therm3C <= 9)){ digitWrite (7, 0); if (therm3C == 0) (digitWrite (6,0)); if (therm3C == 1) (digitWrite (6,1)); if (therm3C == 2) (digitWrite (6,2)); if (therm3C == 3) (digitWrite (6,3)); if (therm3C == 4) (digitWrite (6,4)); if (therm3C == 5) (digitWrite (6,5)); if (therm3C == 6) (digitWrite (6,6)); if (therm3C == 7) (digitWrite (6,7)); if (therm3C == 8) (digitWrite (6,8)); if (therm3C == 9) (digitWrite (6,9)); } if ((therm3C >= 10) && (therm3C <= 19)){ digitWrite (7, 1); if (therm3C == 10) (digitWrite (6,0)); if (therm3C == 11) (digitWrite (6,1)); if (therm3C == 12) (digitWrite (6,2)); if (therm3C == 13) (digitWrite (6,3)); if (therm3C == 14) (digitWrite (6,4)); if (therm3C == 15) (digitWrite (6,5)); if (therm3C == 16) (digitWrite (6,6)); if (therm3C == 17) (digitWrite (6,7)); if (therm3C == 18) (digitWrite (6,8)); if (therm3C == 19) (digitWrite (6,9)); } if ((therm3C >= 20) && (therm3C <= 29)){ digitWrite (7, 2); if (therm3C == 20) (digitWrite (6,0)); if (therm3C == 21) (digitWrite (6,1)); if (therm3C == 22) (digitWrite (6,2)); if (therm3C == 23) (digitWrite (6,3)); if (therm3C == 24) (digitWrite (6,4)); if (therm3C == 25) (digitWrite (6,5)); if (therm3C == 26) (digitWrite (6,6)); if (therm3C == 27) (digitWrite (6,7)); if (therm3C == 28) (digitWrite (6,8)); if (therm3C == 29) (digitWrite (6,9)); } if ((therm3C >= 30) && (therm3C <= 39)){ digitWrite (7, 3); if (therm3C == 30) (digitWrite (6,0)); if (therm3C == 31) (digitWrite (6,1)); if (therm3C == 32) (digitWrite (6,2)); if (therm3C == 33) (digitWrite (6,3)); if (therm3C == 34) (digitWrite (6,4)); if (therm3C == 35) (digitWrite (6,5)); if (therm3C == 36) (digitWrite (6,6)); if (therm3C == 37) (digitWrite (6,7)); if (therm3C == 38) (digitWrite (6,8)); if (therm3C == 39) (digitWrite (6,9)); } if ((therm3C >= 40) && (therm3C <= 49)){ digitWrite (7, 4); if (therm3C == 40) (digitWrite (6,0)); if (therm3C == 41) (digitWrite (6,1)); if (therm3C == 42) (digitWrite (6,2)); if (therm3C == 43) (digitWrite (6,3)); if (therm3C == 44) (digitWrite (6,4)); if (therm3C == 45) (digitWrite (6,5)); if (therm3C == 46) (digitWrite (6,6)); if (therm3C == 47) (digitWrite (6,7)); if (therm3C == 48) (digitWrite (6,8)); if (therm3C == 49) (digitWrite (6,9)); } if ((therm3C >= 50) && (therm3C <= 59)){ digitWrite (7, 5); if (therm3C == 50) (digitWrite (6,0)); if (therm3C == 51) (digitWrite (6,1)); if (therm3C == 52) (digitWrite (6,2)); if (therm3C == 53) (digitWrite (6,3)); if (therm3C == 54) (digitWrite (6,4)); if (therm3C == 55) (digitWrite (6,5)); if (therm3C == 56) (digitWrite (6,6)); if (therm3C == 57) (digitWrite (6,7)); if (therm3C == 58) (digitWrite (6,8)); if (therm3C == 59) (digitWrite (6,9)); } if ((therm3C >= 60) && (therm3C <= 69)){ digitWrite (7, 6); if (therm3C == 60) (digitWrite (6,0)); if (therm3C == 61) (digitWrite (6,1)); if (therm3C == 62) (digitWrite (6,2)); if (therm3C == 63) (digitWrite (6,3)); if (therm3C == 64) (digitWrite (6,4)); if (therm3C == 65) (digitWrite (6,5)); if (therm3C == 66) (digitWrite (6,6)); if (therm3C == 67) (digitWrite (6,7)); if (therm3C == 68) (digitWrite (6,8)); if (therm3C == 69) (digitWrite (6,9)); } if ((therm3C >= 70) && (therm3C <= 79)){ digitWrite (7, 7); if (therm3C == 70) (digitWrite (6,0)); if (therm3C == 71) (digitWrite (6,1)); if (therm3C == 72) (digitWrite (6,2)); if (therm3C == 73) (digitWrite (6,3)); if (therm3C == 74) (digitWrite (6,4)); if (therm3C == 75) (digitWrite (6,5)); if (therm3C == 76) (digitWrite (6,6)); if (therm3C == 77) (digitWrite (6,7)); if (therm3C == 78) (digitWrite (6,8)); if (therm3C == 79) (digitWrite (6,9)); } if ((therm3C >= 80) && (therm3C <= 89)){ digitWrite (7, 8); if (therm3C == 80) (digitWrite (6,0)); if (therm3C == 81) (digitWrite (6,1)); if (therm3C == 82) (digitWrite (6,2)); if (therm3C == 83) (digitWrite (6,3)); if (therm3C == 84) (digitWrite (6,4)); if (therm3C == 85) (digitWrite (6,5)); if (therm3C == 86) (digitWrite (6,6)); if (therm3C == 87) (digitWrite (6,7)); if (therm3C == 88) (digitWrite (6,8)); if (therm3C == 89) (digitWrite (6,9)); } if ((therm3C >= 90) && (therm3C <= 99)){ digitWrite (7, 9); if (therm3C == 90) (digitWrite (6,0)); if (therm3C == 91) (digitWrite (6,1)); if (therm3C == 92) (digitWrite (6,2)); if (therm3C == 93) (digitWrite (6,3)); if (therm3C == 94) (digitWrite (6,4)); if (therm3C == 95) (digitWrite (6,5)); if (therm3C == 96) (digitWrite (6,6)); if (therm3C == 97) (digitWrite (6,7)); if (therm3C == 98) (digitWrite (6,8)); if (therm3C == 99) (digitWrite (6,9)); } Serial.print("CPU = "); Serial.print(therm0C); Serial.print("C / "); Serial.print("GPU = "); Serial.print(therm1C); Serial.print("C / "); Serial.print("Northbridge = "); //Change this to EE if you have a BC PS3. Serial.print(therm2C); Serial.print("C / "); Serial.print("Intake = "); Serial.print(therm3C); Serial.println("C"); delay(500); } // // Below here are the various functions; I put everything right in the sketch...I only // like to use libraries built into Arduino, as it makes copying the sketch into // arduino easier when you don't have to install libraries. // // Functions & Useage: // ------------------- // celsiusConvert(X); //Where "X" is 0-3, for the three thermistors; this function // //is not usually used by itself, but instead by the "getTemps" // //function. If you are using a different thermistor, this is // //the only area you must change. // // getTemps(); //This function will read all 4 sensors, 4 times each. It // //will then average the raw readings, and will call the // //celsiusConvert function for each of the raw averages. // //The outputs are "therm0C", "therm1C", "therm2C", & "therm3C". // // startUp (X); //This command is only used to start the MCP23008 chips which // //control the 7-segment displays. "X" can be 0, 1, 2, or 3. // // decPointWrite (X, Y); //This command is used to turn the decimal points on and off. // // X = 0-7; for the display number. // // Y = 0 or 1. 0=Off, 1=On // // digitWrite (X, Y); //This command writes individual digits to individual displays. // //X = 0-7 - the digit being set // //Y = 0-9, 10 - the number that will be displayed on the digit. // // 0-9 are available. "10" displays nothing. void celsiusConvert(short yyyy){ if (yyyy == 0) (rawThermTMP = rawThermTMP000); if (yyyy == 1) (rawThermTMP = rawThermTMP001); if (yyyy == 2) (rawThermTMP = rawThermTMP002); if (yyyy == 3) (rawThermTMP = rawThermTMP003); if (rawThermTMP <= 58) (cThermTMP = 99); if ((rawThermTMP >= 59) && (rawThermTMP <= 60)) (cThermTMP = 98); if ((rawThermTMP >= 61) && (rawThermTMP <= 62)) (cThermTMP = 97); if ((rawThermTMP >= 63) && (rawThermTMP <= 64)) (cThermTMP = 96); if ((rawThermTMP >= 65) && (rawThermTMP <= 66)) (cThermTMP = 95); if ((rawThermTMP >= 67) && (rawThermTMP <= 68)) (cThermTMP = 94); if ((rawThermTMP >= 69) && (rawThermTMP <= 70)) (cThermTMP = 93); if ((rawThermTMP >= 71) && (rawThermTMP <= 72)) (cThermTMP = 92); if ((rawThermTMP >= 73) && (rawThermTMP <= 74)) (cThermTMP = 91); if ((rawThermTMP >= 75) && (rawThermTMP <= 76)) (cThermTMP = 90); if ((rawThermTMP >= 77) && (rawThermTMP <= 79)) (cThermTMP = 89); if ((rawThermTMP >= 80) && (rawThermTMP <= 81)) (cThermTMP = 88); if ((rawThermTMP >= 82) && (rawThermTMP <= 84)) (cThermTMP = 87); if ((rawThermTMP >= 85) && (rawThermTMP <= 86)) (cThermTMP = 86); if ((rawThermTMP >= 87) && (rawThermTMP <= 89)) (cThermTMP = 85); if ((rawThermTMP >= 90) && (rawThermTMP <= 92)) (cThermTMP = 84); if ((rawThermTMP >= 93) && (rawThermTMP <= 95)) (cThermTMP = 83); if ((rawThermTMP >= 96) && (rawThermTMP <= 98)) (cThermTMP = 82); if ((rawThermTMP >= 99) && (rawThermTMP <= 101)) (cThermTMP = 81); if ((rawThermTMP >= 102) && (rawThermTMP <= 104)) (cThermTMP = 80); if ((rawThermTMP >= 105) && (rawThermTMP <= 108)) (cThermTMP = 79); if ((rawThermTMP >= 109) && (rawThermTMP <= 111)) (cThermTMP = 78); if ((rawThermTMP >= 112) && (rawThermTMP <= 115)) (cThermTMP = 77); if ((rawThermTMP >= 116) && (rawThermTMP <= 118)) (cThermTMP = 76); if ((rawThermTMP >= 119) && (rawThermTMP <= 122)) (cThermTMP = 75); if ((rawThermTMP >= 123) && (rawThermTMP <= 126)) (cThermTMP = 74); if ((rawThermTMP >= 127) && (rawThermTMP <= 130)) (cThermTMP = 73); if ((rawThermTMP >= 131) && (rawThermTMP <= 134)) (cThermTMP = 72); if ((rawThermTMP >= 135) && (rawThermTMP <= 138)) (cThermTMP = 71); if ((rawThermTMP >= 139) && (rawThermTMP <= 142)) (cThermTMP = 70); if ((rawThermTMP >= 143) && (rawThermTMP <= 147)) (cThermTMP = 69); if ((rawThermTMP >= 148) && (rawThermTMP <= 152)) (cThermTMP = 68); if ((rawThermTMP >= 153) && (rawThermTMP <= 157)) (cThermTMP = 67); if ((rawThermTMP >= 158) && (rawThermTMP <= 162)) (cThermTMP = 66); if ((rawThermTMP >= 163) && (rawThermTMP <= 167)) (cThermTMP = 65); if ((rawThermTMP >= 168) && (rawThermTMP <= 173)) (cThermTMP = 64); if ((rawThermTMP >= 174) && (rawThermTMP <= 178)) (cThermTMP = 63); if ((rawThermTMP >= 179) && (rawThermTMP <= 184)) (cThermTMP = 62); if ((rawThermTMP >= 185) && (rawThermTMP <= 189)) (cThermTMP = 61); if ((rawThermTMP >= 190) && (rawThermTMP <= 195)) (cThermTMP = 60); if ((rawThermTMP >= 196) && (rawThermTMP <= 201)) (cThermTMP = 59); if ((rawThermTMP >= 202) && (rawThermTMP <= 208)) (cThermTMP = 58); if ((rawThermTMP >= 209) && (rawThermTMP <= 214)) (cThermTMP = 57); if ((rawThermTMP >= 215) && (rawThermTMP <= 221)) (cThermTMP = 56); if ((rawThermTMP >= 222) && (rawThermTMP <= 227)) (cThermTMP = 55); if ((rawThermTMP >= 228) && (rawThermTMP <= 235)) (cThermTMP = 54); if ((rawThermTMP >= 236) && (rawThermTMP <= 242)) (cThermTMP = 53); if ((rawThermTMP >= 243) && (rawThermTMP <= 249)) (cThermTMP = 52); if ((rawThermTMP >= 250) && (rawThermTMP <= 257)) (cThermTMP = 51); if ((rawThermTMP >= 258) && (rawThermTMP <= 265)) (cThermTMP = 50); if ((rawThermTMP >= 266) && (rawThermTMP <= 273)) (cThermTMP = 49); if ((rawThermTMP >= 274) && (rawThermTMP <= 281)) (cThermTMP = 48); if ((rawThermTMP >= 282) && (rawThermTMP <= 289)) (cThermTMP = 47); if ((rawThermTMP >= 290) && (rawThermTMP <= 298)) (cThermTMP = 46); if ((rawThermTMP >= 299) && (rawThermTMP <= 306)) (cThermTMP = 45); if ((rawThermTMP >= 307) && (rawThermTMP <= 315)) (cThermTMP = 44); if ((rawThermTMP >= 316) && (rawThermTMP <= 325)) (cThermTMP = 43); if ((rawThermTMP >= 326) && (rawThermTMP <= 334)) (cThermTMP = 42); if ((rawThermTMP >= 335) && (rawThermTMP <= 343)) (cThermTMP = 41); if ((rawThermTMP >= 344) && (rawThermTMP <= 353)) (cThermTMP = 40); if ((rawThermTMP >= 354) && (rawThermTMP <= 363)) (cThermTMP = 39); if ((rawThermTMP >= 364) && (rawThermTMP <= 373)) (cThermTMP = 38); if ((rawThermTMP >= 374) && (rawThermTMP <= 384)) (cThermTMP = 37); if ((rawThermTMP >= 385) && (rawThermTMP <= 394)) (cThermTMP = 36); if ((rawThermTMP >= 395) && (rawThermTMP <= 404)) (cThermTMP = 35); if ((rawThermTMP >= 405) && (rawThermTMP <= 415)) (cThermTMP = 34); if ((rawThermTMP >= 416) && (rawThermTMP <= 426)) (cThermTMP = 33); if ((rawThermTMP >= 427) && (rawThermTMP <= 437)) (cThermTMP = 32); if ((rawThermTMP >= 438) && (rawThermTMP <= 448)) (cThermTMP = 31); if ((rawThermTMP >= 449) && (rawThermTMP <= 459)) (cThermTMP = 30); if ((rawThermTMP >= 460) && (rawThermTMP <= 471)) (cThermTMP = 29); if ((rawThermTMP >= 472) && (rawThermTMP <= 483)) (cThermTMP = 28); if ((rawThermTMP >= 484) && (rawThermTMP <= 494)) (cThermTMP = 27); if ((rawThermTMP >= 495) && (rawThermTMP <= 505)) (cThermTMP = 26); if ((rawThermTMP >= 506) && (rawThermTMP <= 517)) (cThermTMP = 25); if ((rawThermTMP >= 518) && (rawThermTMP <= 529)) (cThermTMP = 24); if ((rawThermTMP >= 530) && (rawThermTMP <= 541)) (cThermTMP = 23); if ((rawThermTMP >= 542) && (rawThermTMP <= 552)) (cThermTMP = 22); if ((rawThermTMP >= 553) && (rawThermTMP <= 564)) (cThermTMP = 21); if ((rawThermTMP >= 565) && (rawThermTMP <= 576)) (cThermTMP = 20); if ((rawThermTMP >= 577) && (rawThermTMP <= 588)) (cThermTMP = 19); if ((rawThermTMP >= 589) && (rawThermTMP <= 600)) (cThermTMP = 18); if ((rawThermTMP >= 601) && (rawThermTMP <= 612)) (cThermTMP = 17); if ((rawThermTMP >= 613) && (rawThermTMP <= 623)) (cThermTMP = 16); if ((rawThermTMP >= 624) && (rawThermTMP <= 635)) (cThermTMP = 15); if ((rawThermTMP >= 636) && (rawThermTMP <= 647)) (cThermTMP = 14); if ((rawThermTMP >= 648) && (rawThermTMP <= 658)) (cThermTMP = 13); if ((rawThermTMP >= 659) && (rawThermTMP <= 670)) (cThermTMP = 12); if ((rawThermTMP >= 671) && (rawThermTMP <= 681)) (cThermTMP = 11); if ((rawThermTMP >= 682) && (rawThermTMP <= 692)) (cThermTMP = 10); if ((rawThermTMP >= 693) && (rawThermTMP <= 703)) (cThermTMP = 9); if ((rawThermTMP >= 704) && (rawThermTMP <= 714)) (cThermTMP = 8); if ((rawThermTMP >= 715) && (rawThermTMP <= 725)) (cThermTMP = 7); if ((rawThermTMP >= 726) && (rawThermTMP <= 736)) (cThermTMP = 6); if ((rawThermTMP >= 737) && (rawThermTMP <= 746)) (cThermTMP = 5); if ((rawThermTMP >= 747) && (rawThermTMP <= 756)) (cThermTMP = 4); if ((rawThermTMP >= 757) && (rawThermTMP <= 766)) (cThermTMP = 3); if ((rawThermTMP >= 767) && (rawThermTMP <= 776)) (cThermTMP = 2); if ((rawThermTMP >= 777) && (rawThermTMP <= 786)) (cThermTMP = 1); if (rawThermTMP >= 786) (cThermTMP = 0); if (yyyy == 0) (therm0C = cThermTMP); if (yyyy == 1) (therm1C = cThermTMP); if (yyyy == 2) (therm2C = cThermTMP); if (yyyy == 3) (therm3C = cThermTMP); } void getTemps(){ rawThermTMP00 = analogRead(thermPin0); rawThermTMP01 = analogRead(thermPin1); rawThermTMP02 = analogRead(thermPin2); rawThermTMP03 = analogRead(thermPin3); delay(50); rawThermTMP04 = analogRead(thermPin0); rawThermTMP05 = analogRead(thermPin1); rawThermTMP06 = analogRead(thermPin2); rawThermTMP07 = analogRead(thermPin3); delay(50); rawThermTMP08 = analogRead(thermPin0); rawThermTMP09 = analogRead(thermPin1); rawThermTMP10 = analogRead(thermPin2); rawThermTMP11 = analogRead(thermPin3); delay(50); rawThermTMP12 = analogRead(thermPin0); rawThermTMP13 = analogRead(thermPin1); rawThermTMP14 = analogRead(thermPin2); rawThermTMP15 = analogRead(thermPin3); delay(50); rawThermTMP16 = (rawThermTMP00 + rawThermTMP04); rawThermTMP17 = (rawThermTMP08 + rawThermTMP12); rawThermTMP18 = (rawThermTMP01 + rawThermTMP05); rawThermTMP19 = (rawThermTMP09 + rawThermTMP13); rawThermTMP20 = (rawThermTMP02 + rawThermTMP06); rawThermTMP21 = (rawThermTMP10 + rawThermTMP14); rawThermTMP22 = (rawThermTMP03 + rawThermTMP07); rawThermTMP23 = (rawThermTMP11 + rawThermTMP15); rawThermTMP24 = (rawThermTMP16 + rawThermTMP17); rawThermTMP25 = (rawThermTMP18 + rawThermTMP19); rawThermTMP26 = (rawThermTMP20 + rawThermTMP21); rawThermTMP27 = (rawThermTMP22 + rawThermTMP23); rawThermTMP000 = (rawThermTMP24 / 4); rawThermTMP001 = (rawThermTMP25 / 4); rawThermTMP002 = (rawThermTMP26 / 4); rawThermTMP003 = (rawThermTMP27 / 4); celsiusConvert(0); celsiusConvert(1); celsiusConvert(2); celsiusConvert(3); } void digitWrite (uint8_t aaaa, uint8_t bbbb){ if (aaaa == 0) (cccc = 0x20); if (aaaa == 0) (cccc = 0x20); if (aaaa == 1) (cccc = 0x21); if (aaaa == 2) (cccc = 0x22); if (aaaa == 3) (cccc = 0x23); if (aaaa == 4) (cccc = 0x24); if (aaaa == 5) (cccc = 0x25); if (aaaa == 6) (cccc = 0x26); if (aaaa == 7) (cccc = 0x27); if (aaaa == 0) (gpiotmp = gpio000); if (aaaa == 1) (gpiotmp = gpio001); if (aaaa == 2) (gpiotmp = gpio002); if (aaaa == 3) (gpiotmp = gpio003); if (aaaa == 4) (gpiotmp = gpio004); if (aaaa == 5) (gpiotmp = gpio005); if (aaaa == 6) (gpiotmp = gpio006); if (aaaa == 7) (gpiotmp = gpio007); if (bbbb == 0){ gpiotmp |= 1 << 6; //Set output 1 as hot gpiotmp &= ~(1 << 0); //Set output 0 as ground gpiotmp &= ~(1 << 3); //Set output 2 as ground gpiotmp &= ~(1 << 5); //Set output 3 as ground gpiotmp &= ~(1 << 1); //Set output 4 as ground gpiotmp &= ~(1 << 4); //Set output 5 as ground gpiotmp &= ~(1 << 2); //Set output 6 as ground } if (bbbb == 1){ gpiotmp &= ~(1 << 1); gpiotmp &= ~(1 << 2); gpiotmp |= 1 << 0; gpiotmp |= 1 << 6; gpiotmp |= 1 << 3; gpiotmp |= 1 << 5; gpiotmp |= 1 << 4; } if (bbbb == 2){ gpiotmp &= ~(1 << 0); gpiotmp &= ~(1 << 6); gpiotmp &= ~(1 << 3); gpiotmp |= 1 << 5; gpiotmp &= ~(1 << 1); gpiotmp &= ~(1 << 4); gpiotmp |= 1 << 2; } if (bbbb == 3){ gpiotmp &= ~(1 << 3); gpiotmp &= ~(1 << 2); gpiotmp &= ~(1 << 6); gpiotmp &= ~(1 << 1); gpiotmp &= ~(1 << 0); gpiotmp |= 1 << 5; gpiotmp |= 1 << 4; } if (bbbb == 4){ gpiotmp &= ~(1 << 2); gpiotmp &= ~(1 << 1); gpiotmp &= ~(1 << 6); gpiotmp &= ~(1 << 5); gpiotmp |= 1 << 0; gpiotmp |= 1 << 3; gpiotmp |= 1 << 4; } if (bbbb == 5){ gpiotmp &= ~(1 << 3); gpiotmp &= ~(1 << 2); gpiotmp &= ~(1 << 6); gpiotmp &= ~(1 << 5); gpiotmp &= ~(1 << 0); gpiotmp |= 1 << 1; gpiotmp |= 1 << 4; } if (bbbb == 6){ gpiotmp &= ~(1 << 0); gpiotmp &= ~(1 << 5); gpiotmp &= ~(1 << 4); gpiotmp &= ~(1 << 3); gpiotmp &= ~(1 << 2); gpiotmp &= ~(1 << 6); gpiotmp |= 1 << 1; } if (bbbb == 7){ gpiotmp &= ~(1 << 0); gpiotmp &= ~(1 << 1); gpiotmp &= ~(1 << 2); gpiotmp |= 1 << 6; gpiotmp |= 1 << 3; gpiotmp |= 1 << 5; gpiotmp |= 1 << 4; } if (bbbb == 8){ gpiotmp &= ~(1 << 0); gpiotmp &= ~(1 << 6); gpiotmp &= ~(1 << 3); gpiotmp &= ~(1 << 5); gpiotmp &= ~(1 << 1); gpiotmp &= ~(1 << 4); gpiotmp &= ~(1 << 2); } if (bbbb == 9){ gpiotmp &= ~(1 << 0); gpiotmp &= ~(1 << 6); gpiotmp &= ~(1 << 3); gpiotmp &= ~(1 << 5); gpiotmp &= ~(1 << 1); gpiotmp |= 1 << 4; gpiotmp &= ~(1 << 2); } if (bbbb == 10){ gpiotmp |= 1 << 0; gpiotmp |= 1 << 6; gpiotmp |= 1 << 3; gpiotmp |= 1 << 5; gpiotmp |= 1 << 1; gpiotmp |= 1 << 4; gpiotmp |= 1 << 2; } if (aaaa == 0) (gpio000 = gpiotmp); if (aaaa == 1) (gpio001 = gpiotmp); if (aaaa == 2) (gpio002 = gpiotmp); if (aaaa == 3) (gpio003 = gpiotmp); if (aaaa == 4) (gpio004 = gpiotmp); if (aaaa == 5) (gpio005 = gpiotmp); if (aaaa == 6) (gpio006 = gpiotmp); if (aaaa == 7) (gpio007 = gpiotmp); Wire.beginTransmission(cccc); Wire.send(0x09); Wire.send(gpiotmp); Wire.endTransmission(); } void decPointWrite (short dddd, short eeee){ if (dddd == 0) (gpiotmp = gpio000); //Devices are numbered 0-7. if (dddd == 1) (gpiotmp = gpio001); if (dddd == 2) (gpiotmp = gpio002); if (dddd == 3) (gpiotmp = gpio003); if (dddd == 4) (gpiotmp = gpio004); if (dddd == 5) (gpiotmp = gpio005); if (dddd == 6) (gpiotmp = gpio006); if (dddd == 7) (gpiotmp = gpio007); if (eeee == 0) (gpiotmp |= 1 << 7); if (eeee == 1) (gpiotmp &= ~(1 << 7)); if (dddd == 0) (gpio000 = gpiotmp); if (dddd == 1) (gpio001 = gpiotmp); if (dddd == 2) (gpio002 = gpiotmp); if (dddd == 3) (gpio003 = gpiotmp); if (dddd == 4) (gpio004 = gpiotmp); if (dddd == 5) (gpio005 = gpiotmp); if (dddd == 6) (gpio006 = gpiotmp); if (dddd == 7) (gpio007 = gpiotmp); Wire.beginTransmission(dddd); Wire.send(0x09); Wire.send(gpiotmp); Wire.endTransmission(); } void startUp(uint8_t X){ Wire.begin(); Wire.beginTransmission(X); Wire.send(0x00); Wire.send(0xFF); Wire.send(0x00); Wire.send(0x00); Wire.send(0x00); Wire.send(0x00); Wire.send(0x00); Wire.send(0x00); Wire.send(0x00); Wire.send(0x00); Wire.send(0x00); Wire.endTransmission(); Wire.beginTransmission(X); Wire.send(0x00); Wire.send(0x00); Wire.endTransmission(); }