DHT22 Does not update
Try moving dht.begin(); to setup(). 

The DHTs are pretty slow and need some time (of the order of seconds!) between consecutive reads. In dht.begin() an internal timer is reset that is used in readTemperature() to ensure that reading data from the DHT is not attempted in shorter intervals than supported. By calling dht.begin() every 300 ms you're making this meachanism inoperative. You're supposed to call dht.begin() only once at start-up.

Edit: And please also remove the Timer1 that calls loop. loop is already an infinite loop, so no good in calling it additionally from an interrupt...