Do not forget that error messages may be appealing but they must be useful above anything else.
Differentiate your messages!
A brief description of what will not work (if it's not obvious) is good and appropriate but do not lazy stick to one generic error message.
You know what's wrong then do a favor to users and keep them informed, they may even be able to solve the problem (or give better information to technical support, if any).
One message for unsupported device, with link to list of supported ones, please:
Barcode scanning is not available because your webcam is not supported. See list of supported devices.
Another message if there isn't any device at all, with link to common issues:
Barcode scanning is not available because you do not have a webcam. If you have start troubleshooting or consult our help for common issues.
Can you be more specific? Do it but don't become over-technical:
Barcode scanning is not available because you do not have a Full HD webcam. If you have...
Use appropriate wording for your audience. "Webcam" is a well-known word but "video recording device" or "video capture device" may be better for some users.
About emoticons: right wording, style and a touch of humanity is probably good for a young audience if your application is not for professional use. I don't want funny things in my home banking application even if I'm 18. If it applies then don't refrain to use them!