Giving away software is a mixed bag, and you have to decide where you should give it and where you should discount it. For example, your local animal shelter is severely understaffed and underfunded, so giving them the software is fine. Princeton, while technically a non-profit, has a truly ridiculous amount of money, so discounts for them. One rule of thumb is that you should never sell at full price to a non-profit because a) they'll find someone else who's willing to undercut you, and b) it makes you look like a dick.
You can't demand anything from them even if you give it away, but you're well within your rights to ask them to publicly thank you. Sort of the way this works is that you give them the software unconditionally and say, "By the way... if you could write something in your newsletter about this..." However, if they don't, you can't hold it against them. Every non-profit gets regular donations from the least likely places, and $2,000 isn't a lot compared to what Microsoft gives them.
Selling at $25 may not be a great idea because, like Jarie said, it kind of underscores your point, and it also cheapens your product. Ideally, you'd like to sell it either at cost or slightly below. If you drop the price by 50%, it says, "Even though they're selling at a discount, it still costs a lot of money to develop". Selling at $25 says, "Some guy wrote this in his garage and he's just looking to make a quick buck." It also puts you in the same price category as open-source software but without community support.