I often need to send text messages but my only way to send is via email. No worries. All carriers have a email version of your phone number that convert emails to texts. Here is how to figure out your email to text address:
- AT&T – firstname.lastname@example.org
- Verizon – email@example.com
- T-Mobile – firstname.lastname@example.org
- Sprint PCS – email@example.com
- Virgin Mobile – firstname.lastname@example.org
- US Cellular – email@example.com
- Nextel – firstname.lastname@example.org
- Boost – email@example.com
- Alltel – firstname.lastname@example.org
HP for the most part is a pain in the butt when it comes to finding parts for servers. BUT- I found a neat resource that lets you not only find parts but specific ones based on your server serial number. Total win.
It’s called the HP PartSurfer.
Finding a motherboard part number with just a serial number is stupid simple. Love it.
I found time over the holidays to mess with one of my old original projects- the Tri-Temp
It was very interesting to poke around in some of my original hardware/code and add some things to it.
Attached is a gallery of pics from the latest incarnation.
I’ll add the code changes and an updated schematic shortly. Continue reading “Tri-Temp Update”
Wikipedia says that a proportional–integral–derivative controller (PID controller) is a generic control loop feedback mechanism (controller) widely used in industrial control systems – a PID is the most commonly used feedback controller. A PID controller calculates an “error” value as the difference between a measured process variable and a desired setpoint. The controller attempts to minimize the error by adjusting the process control inputs.
Continue reading “PID? What is it?”
I haven’t worked on the Tri-Temp project in a while. I am going to go through and update the code a bit to lower the memory usage based on what I’ve learned for the LCC projects.
The original LCC code will have an update posted soon too. Mostly memory updates and a few control changes. I wasn’t sure if I wanted to bother but since the original LCC is still running my lizard’s climate I figured why not.
So I want to add some kind of visual indication that my main arduino loop is still well, looping. I decided on an LED “spinner”, kind of like on web pages and applications. but how to do it?
After a lot of searching I found something neat. A decade counter.
Seems this nice little IC (4017) has 10 outputs that go high in a sequence when given a pulse. The perfect thing to do when you want LEDs to “chase” or spin.
I hope to add this to the new LCC. Should help indicate that the main loop is still looping!
Detailed info on a similar “chaser” project here.
I’ve been programming for most of my life. Very very rarely have I had issues with memory or lack of memory.
Now that I’m hot an heavy into microcontroller programming I’ve stumbled across an issue that has apparently been causing me issues without me know it it.
Lack of memory!
The ATmega328 series chip that is the brain of the typical Arduino board has 3 memory locations.
- The Flash is typically 32k bytes. This is what the Arduino IDE tells you about when you compile/upload your code.
- The SRAM is something no one told me about…this is the actual operating program memory space (RAM). This is where your app runs and lives. Your variables live here. When this space is used up things get wonky. The Arduino crashes or worse does strange unexplainable things.
- The EEPROM is generally not used by the average programmer so I won’t cover it here.
JeeLabs has a killer write up on the SRAM and…wait for it….how to see how much is used!
I added their little function to output RAM usage and holy cow. I had it all used up!
So I had to learn about memory management. Lesson one- strings use up a lot of space!
JeeLabs also has a killer write up on how to optimize your string usage. READ IT! The Arduino site also has a write up on how to use the Flash memory for storing static variables too.
After all this learning I finally got my code “optimized”. I thought my latest project was a gonner but putting variables in Flash, dumping A LOT of debug code made a huge difference. I went from zero bytes of RAM and crashes to about 646 bytes free. Doesn’t sound like much but when you only have 2048 bytes to start with, that’s pretty good!
Now to figure out how to have my debug code and still keep the memory usage low!
I’ve started on LCC 2nd Gen or LCC2 or LCC II. I don’t know what to call it. BUT I do know it’ll be killer.
This one is going to be everything LCC 1 was not.
So far I have:
- 64 GPIOs
- A better RTC
- 2 OLED displays
- The RTC can be updated via serial — no need to upload code to the Arduino, update the clock and then reupload the LCC code!
- More cool factor….
So check this out- I2C rocks! The awesome Centipede Shield from macetech.com is HUGELY awesome. Via the I2C 2 wire interface you now have access to 64 Digital ports. In any combination of In or Out. This is the cornerstone of the new LCC hardware. Especially since the Ethernet takes a lot of digital ports. This thing is way cool. If you need more digital ports get one asap.
The OLED displays are really neat. I got 5 from a Kickstarter project and they’re now generally available from Sabernetics Tech. They’re tiny and bright! Since you now have 64 ports you can have as many of these displays as you want. Just put each on its own port to select which one to write to…If you don’t you’ll write to them all at once! Gotta love bus networks (I2C).
I hope to make the LCC’s ability to control lights and heat sources more generic. Since the IO is so plentiful I can make the code generic enough to handle fans, heat mats, uv lights etc in different combinations.
Keep checking the site as I post updates about this project!
This may be useful for you if you haven’t memorized the pins on the Arduino UNO R3
Handy Arduino Uno R3 Pinout Diagram.
My LCC project is growing. Too much I/O is needed! I’m exploring the I²C bus system. It seems simple enough.
Direct I/O is nice but is wasteful- I’ve used all the I/O already on the LCC project but I still need more! Wikipedia has a great write up all about it. Now I have to apply it to Arduino!