rate 1/128 channel code for 5 bits of information
Since you say you want to take the channel conditions into account, one thing that immediately comes to mind is to suggest an adaptive link. Assuming you have access to the channel conditions, you can do two things to adjust the link: 


Change the modulation: for example, think about using a higher order scheme like 16 QAM for "clear" channel conditions and using QPSK or BPSK for worse channel conditions.
Change the code rate of the channel code: this can be done by choosing a code with some rate, then depending on the channel you can perform puncturing to remove some parity bits (thus increase rate) when the channel is "clear".