Hi, I would like to know the differences between them, are all of those just different microcontrollers fabricated by different companies? or there is another important difference? FPGAs are programed with VHDL and pics and arduinos with c, assembler? or it could be in another way? when is convenient to use one and when another?