Need help understanding a parallel circuit and how to make it work right
"flicker" sounds like a lose contact.


  ledcalc.com said it needed a 30ohm resistor. 


Don't ask any tool like ledcalc - the math is really simple: Over the three LEDs, 3· 2.8 V drop, so 8.4 V in total. You have +9V (do you? Or is the battery already lower? Measure, then measure under load!), then you only need to drop 0.6V, so that means your resistance must drop 0.6V when conducting 20 mA. U = R·I, so R = U/I = 600 mV / 20 mA = 30 Ω. Now, what happens if your battery is only marginally used and not at the absolutely full 9V, but at, let's say, 8.5 V?

Your LED forward voltages are still roughly the same, so now you're dropping only 0.1 V over the resistor. U = R·I, so I = U/R = 100mV / 30 Ω = 3.33 mA. 

So, your 30 Ω resistor is a bad idea here, because it's only applicable to a reliably 9V source, which a battery isn't after a rather short time.

The arduino doesn't suffer the same problem, because it has a voltage regulator that drops any voltage difference between the input voltage (9V or less, basically, anything sufficiently above 5V) and the 5V it needs. 

So: run your LEDs (3 in parallel, not series!) off the Arduino's voltage regulator (the 5V), and calculate the resistor you need for each single LED.