Changes for page Front I/O
Last modified by Kevin Wiki on 2024/07/07 22:48
From version
8.1
edited by Kevin Wiki
on 2024/07/05 12:23
on 2024/07/05 12:23
Change comment:
There is no comment for this version
To version
7.3
edited by Kevin Wiki
on 2024/07/05 09:31
on 2024/07/05 09:31
Change comment:
There is no comment for this version
Summary
Details
- Page properties
-
- Content
-
... ... @@ -194,77 +194,6 @@ 194 194 * Power LED P3V3 - 3.30V 195 195 * Power LED - 0.87 V 196 196 197 -= Controlling top I/O LED = 198 - 199 -On the top row we have the following input/output devices in order from left to right; 200 - 201 -Left side: 202 - 203 -* physical lock 204 -* lock LED 205 -* warning/service button 206 -* warning/service LED 207 -* locate button 208 -* power LED (red & green) 209 -* fan LED (red & green) 210 -* temperature LED (red & green) 211 -* compute LED (unknown) 212 - 213 -Right side: 214 - 215 -* power LED (red & green) 216 -* fan LED (red & green) 217 -* temperature LED (red & green) 218 -* compute LED (unknown) 219 -* lock switch 220 - 221 -Each sides bank of LEDs are driven by each their PCA9554 shift register. The registers represent the following LEDs: (Note that Lock LED is only present for the LEFT side) 222 - 223 -(% border="1" %) 224 -|=(% scope="row" %)Register|1|2|3|4|5|6|7 225 -|=Device|Power LED Green|Power LED Red|Fan LED Green|Fan LED Red|Temperature LED Green|Temperature LED Red|Lock LED 226 - 227 -To control each LED we shift either a 0 to turn off or 1 to turn on. Since each device shares a single red/green LED (power LED green & power LED red) setting both to 1 at the same time will always leave it red. That is when power LED green and power LED red are both enabled, red always takes precedence. 228 - 229 -Use following script to power LEDs one at a time: 230 - 231 -{{code language="c++"}} 232 -#include <PCA9554.h> // Load the PCA9554 Library 233 - 234 -PCA9554 ioCon1(0x24); // Create an object at this address 235 - 236 -uint8_t mapIO = 0b10000000; 237 - 238 -void shiftL() { 239 - mapIO = (mapIO << 1) | ((mapIO & 0x80) >> 7); 240 -} 241 - 242 -void write() { 243 - Serial.println("writing to PCA9554 device"); 244 - 245 - for (int i = 0; i < 8; ++i) { 246 - ioCon1.digitalWrite(i, (mapIO & (1 << i)) ? 0 : 1); 247 - } 248 -} 249 - 250 -void setup() 251 -{ 252 - Serial.begin(9600); 253 - Serial.println("Setup"); 254 - 255 - ioCon1.portMode(ALLOUTPUT); 256 -} 257 - 258 -void loop() 259 -{ 260 - write(); 261 - shiftL(); 262 - 263 - delay(500); 264 -} 265 -{{/code}} 266 - 267 - 268 268 269 269 ))) 270 270