🇺🇦 Stand with Ukraine 🇺🇦

Blog

This is a private homepage... ;)

Arduino PF575 I²C I/O port expander blink example

I got some TI PCF8575 I²C I/O expander devices some years ago and never gave them a try. Yesterday I did... In the title they are named PF575, this is because this is what is printed on the device.

I wrote code for making a LED blink using the I/O expander as simple as possible.

Here you see my setup on a breadboard. On the left is the LED connected via a PNP transistor for voltage control.

PF575 / PCF8575 attached to Arduino

I only had 24-SSOP packages so I needed to solder the PCF8575 to a DIP adapter for making it breadboard friendly.

PF575 / PCF8575

My code:

#include <Wire.h>  /**  *  Arduino PF575/PCF8575 I2C I/O port exapander LED blink example  *  *  Setup:  *  *  1. Connect A0, A1 and A2 to GND to set the address to 0x20.  *  2. Connect SDL and SCL to the Arduino's I2C bus.  *  3. Connect a LED to the P0 port of the I2C exapander.  *     In my setup I am using a PNP Transistor connected to 5V using  *     a resistor, the LED and the Arduino to make sure the LED gets  *     a current from Vcc and not from the I2C exapander port.  *  *  This code is trying to explain how it works as simple as possible.  *  More detailed examples are found on the web. Search for pcf8575 and  *  you will find what you want. */  // Set I2C address int address = 0x20;  void setup(){   Wire.begin();   // Set all ports as output   pf575_write(word(B11111111,B11111111)); }  void loop(){   // Set port P0 on   pf575_write(word(B00000000,B00000001));   delay(1000);   // Set port P0 off   pf575_write(word(B00000000,B00000000));   delay(1000); }  // Function for writing two Bytes to the I2C expander device void pf575_write(uint16_t data) {   Wire.beginTransmission(address);   Wire.write(lowByte(data));   Wire.write(highByte(data));   Wire.endTransmission(); }

Some links:

Gentoo Zsh prompt with Git features

Some years ago I posted the Gentoo Zsh prompt to make it available to every Zsh user, not only Gentoo users. Some days ago I wanted some Git features in my shell. I saw some nice prompt features in the last years when using Git so I wanted that too. I didn't found a nice prompt so I decided to write my own. I installed oh-my-zsh and created my own theme. It is based on the original Gentoo Zsh prompt and the Kolo oh-my-zsh theme.

Below you see an example session interacting with a Git repository:

hanez.zsh-theme.png

Nice, isn't it?

I love minimal prompts with all the information I need. Since I am using xterm it is compatible to it. I love colors... ;)

You can see here that the [master*] part is not shown when not in a Git managed directory. My $HOME is managed by Git so I always have the repository information available, but not as root.

The code is found in my fork of the oh-my-zsh repository. Take a look under themes/, there is a file named hanez.zsh-theme. You can add this file to any oh-my-zsh installation from the upstream repositories or just add the content of the file to your .zshrc file. I use this fork only for providing my theme.

All of my custom Zsh stuff is found in my $HOME repository at GitHub.

Update: I replaced the dots which are showing the Git status with some asterisk to make the prompt become compatible to more terminal emulators. Some bugs are fixed too.

hanez.zsh-theme.update.png

[Update]: Here is the code:

autoload -Uz vcs_info  zstyle ':vcs_info:*' stagedstr '%F{green}*' zstyle ':vcs_info:*' unstagedstr '%F{yellow}*' zstyle ':vcs_info:*' check-for-changes true zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{11}%r' zstyle ':vcs_info:*' enable git svn theme_precmd () {     if [[ -z $(git ls-files --other --exclude-standard 2> /dev/null) ]] {         zstyle ':vcs_info:*' formats ' [%b%c%u%B%F{green}]'     } else {         zstyle ':vcs_info:*' formats ' [%b%c%u%B%F{red}*%F{green}]'     }      vcs_info } setopt prompt_subst if [ "$USER" = 'root' ] then PROMPT='%B%F{red}%m%F{green}${vcs_info_msg_0_} %F{blue}%c #%b%f ' else PROMPT='%B%F{green}%n@%m${vcs_info_msg_0_} %F{blue}%c #%b%f ' fi autoload -U add-zsh-hook add-zsh-hook precmd  theme_precmd

Let's get the party started


The winter was long, the year began cold... Today I felt a little bit that spring is not far away anymore. \o/

I was at the beach and enjoyed it very much. Energy is back! Let's get the party started! Welcome 2013!

:)

I got a NAS device and installed Linux

Today a friend gave me his old NAS as a gift... It is an Acer easyStore H340 with 2 x 1TB harddrives. There was a broken Windows installation on it which I directly replaced with the very nice Debian based NAS solution called OpenMediaVault.

I setup the box within some few minutes and it is wonderful. I must say that I installed the OS on an external USB stick because I wanted a mirrored RAID and didn't wanted to insert a 3rd harddrive just for the OS. I will maybe add a small SSD or flash on the SATA bus at some time and will then put the OS there... but only if I am not adding two more harddrives... ;) For now everything is nice like it is.

The web GUI is very clean and easy to use. The RAID was also setup within the web GUI. Everything is just some clicks and you're done... :)

I am happy about this new device!

Pages

1 2 3 4 5 6 7 8 9 10 11 12 13 14

Page generated at: Oct 15, 2025 (CEST) using Jekyll & xw3 on GNU/Linux
NULL
Powered by: NULL