= Arduino Programming Techniques = This is mostly gonna be C++ == Accessing a GPIO line == {{{ //data direction register bit unsigned char *portDDRB; portDDRB = (unsigned char *) 0x24; }}} First we get an 8bit pointer and load it with a hard coded value of the data-space address for that register See [[arduino_nano#Pins]] == Bit masks == {{{ #define BIT6_MASK 0x40 // 0100 0000 #define BIT5_MASK 0x20 // 0010 0000 *register_pointer = (*regiser_pointer) & (~BIT6_MASK); *register_pointer = (*regiser_pointer) | BIT5_MASK; }}} For the first one we find the compilemnt then '&' it with the current register values, which will only flip the selected bit. For the second one we '|' it with the contents, setting a 1 in the 5th position == Polling GPIO pins == repeatedly reading the value of the input pins and comparing the current value to the previously-read value to determine if an external signal event has occurred. We can do this by comparing the last known value of the gpio pin with the current one See [[arduino_nano#Pins]] [[embedded]]