Yubikeys have a Totp functionality as far as I remember. You will find more information on their website. (Edit: this should be the needed instructions)
Never tried it but I am guessing, this is the way it should work: it‘s the same as any other TOTP authentication app, just that the string from which the totp is derived, needs to be stored on the yubikey. On Bitwarden you would use their free Totp tier, which should provide you with that string.
Honestly, i would pay the 10$/y to use WebAuthn, support Bitwardens development, and make my own life easier
Totp for login to Bitwarden is in the free tier. Totp codes for other accounts saved in bitwarden are not. There is a separate free totp app by bitwarden though.